魔兽世界题目检索器(Python小项目)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38358305/article/details/88087111

最近接到个同学给的小项目,配合他们节目做个题目检索器。

下图是题库的数据格式。

需求是要按sheet名以及难度(后续会按题组)返回对应的题目生成excel,并提供UI供操作。

代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pandas as pd
import tkinter as tk
from tkinter import ttk


def go(*args):   #处理事件,数据处理部分
    filename = '总题库索引.xlsx'
    df = pd.read_excel(filename, sheet_name=careerChosen.get())
    df['难度'] = df['难度'].fillna(method='pad', limit=1)
    df['游戏版本'] = df['游戏版本'].fillna(method='pad', limit=1)
    degree = degreeChosen.get()
    df = df.loc[df['难度'] == degree]
    df = df[
        ['问题', 'Unnamed: 2', 'Unnamed: 3', 'Unnamed: 4', 'Unnamed: 5', 'Unnamed: 6', 'Unnamed: 7', 'Unnamed: 8', '答案',
         '游戏版本']]
    ls = [column for column in df]
    for i in range(len(ls)):
        if ls[i][0] == 'U':
            ls[i] = ''
    df.columns = ls
    outname =careerChosen.get()+degreeChosen.get()+'等难度.xlsx'
    df.to_excel(outname,index=False)
    print('已生成文件:%s'%outname) #打印选中的值


win = tk.Tk()
win.title("魔兽世界题目检索器")  # 标题

ttk.Label(win, text="难度:").grid(column=1, row=0)  # 添加一个标签,并将其列设置为1,行设置为0
ttk.Label(win, text="职业:").grid(column=0, row=0)  # 设置其在界面中出现的位置  column代表列   row 代表行


# button被点击之后会被执行
def clickMe():  # 当acction被点击时,该函数则生效
    # action.configure(text='数据导出')  # 设置button显示的内容
    # action.configure(state='disabled')  # 将按钮设置为灰色状态,不可使用状态
    go()

# 按钮
action = ttk.Button(win, text="生成题目", command=clickMe)  # 创建一个按钮, text:显示按钮上面显示的文字, command:当这个按钮被点击之后会调用command函数
action.grid(column=2, row=1)  # 设置其在界面中出现的位置  column代表列   row 代表行

# 创建一个下拉列表
career = tk.StringVar()
careerChosen = ttk.Combobox(win, width=12, textvariable=career)
careerChosen['values'] = ('征服者(以下)','创世者','火车王','名人堂','探险家','外交家','博学者','角斗士','生活家','特种兵')  # 设置下拉列表的值
careerChosen.grid(column=0, row=1)  # 设置其在界面中出现的位置  column代表列   row 代表行
careerChosen.current(0)  # 设置下拉列表默认显示的值,0为 numberChosen['values'] 的下标值


# 创建一个下拉列表
degree = tk.StringVar()
degreeChosen = ttk.Combobox(win, width=12, textvariable=degree)
degreeChosen['values'] = ('低','中','高')  # 设置下拉列表的值
degreeChosen.grid(column=1, row=1)  # 设置其在界面中出现的位置  column代表列   row 代表行
degreeChosen.current(0)  # 设置下拉列表默认显示的值,0为 numberChosen['values'] 的下标值

win.mainloop()  # 当调用mainloop()时,窗口才会显示出来

这是界面。 

因为要供无python环境的电脑使用,还需要将代码打包,使用的是pyinstaller。

需下载pyinstaller以及pywin32:

安装命令:1.pip install pywin32             2.pip install PyInstaller                 3.pip install pywin32-ctypes

在cmd的py文件目录路径下输入 pyinstaller -F xxx.py即可。(exe文件在目录的dist文件夹中)

可能会遇到bug:

  • Exception:
                Cannot find existing PyQt5 plugin directories
                Paths checked: C:\Qt\Qt5.3.1\5.3\msvc2013_64\plugins
  • 解决方法就是用everything搜索PyQt5,找到 /Library/plugins路径下的PyQt5文件夹,将里面的dll动态库pyqt5.dll,pyqt5qmlplugin.dlll复制出来
  • 按照错误提示的路径,一个个的新建文件夹,形成目录 C:\Qt\Qt5.3.1\5.3\msvc2013_64\plugins,将刚才复制出来的dll动态库拷贝进去即可

后续需求待更新。 

猜你喜欢

转载自blog.csdn.net/qq_38358305/article/details/88087111