利用 tkinter 实现题库查询功能 [控件大小自适应界面变化]

今天回答了几个和 tkinter 相关的问题,都是和界面,控件,事件相关,结合这段时间都在手机答题, 题库查询太麻烦。就做了这个例子。

本例子用到 Tkinter 库。 包含Tkinter 的 Label , Entry , Button , Text 还有相关事件。 完成题库的查询显示功能。

控件大小自适应界面变化。

数据包含100道题目。

# encoding: utf-8
"""
@author: seakingx
@contact: [email protected]
@version: 1.0
@file: doex.py
@time: 2020/3/19 0019 14:39

说明 简单查题工具
"""

import tkinter as tk
from tkinter import messagebox
on_hit = False
class MainBox:
    def __init__(self):
        self.AppName = "刷题【好好学习 天天向上】"
        self.size = '800x600'
        self.datalist = []
        self.init_data()

    def init_data(self):
        f = open('qgtk/qgtk.txt', encoding='utf8')
        txt_list = f.readlines()
        f.close()
        t_i = 0
        t_text = ""
        t_item = []
        t_list = []
        for t in txt_list:
            if t.strip() == "":
                continue
            if t.find("答案") >= 0:
                t_i = t_i + 1
                t_item.append(t_text.replace("\t", ""))
                t_item.append(t.replace("\t", ""))
                # t_list.append(t_item)
                self.datalist.append(t_item)
                t_text = ""
                t_item = []
            else:
                t_text = t_text + t
        # self.datalist = t_list[:]


    def window_begin(self):
        begin = tk.Tk()
        begin.title(self.AppName)
        begin.geometry(self.size)

        key_input = tk.Entry(begin, font=('微软雅黑', 16))
        key_input.place(relx=0.025, y=20, height=40, relwidth=0.50)



        def bksearch(ev = None):
            key_str = key_input.get()
            # print("查询{}".format(key_str))
            text_list.delete("1.0", tk.END)
            find_cnt = 0
            for t in self.datalist:
                if t[0].find(key_str)>0:
                    find_cnt = find_cnt + 1
                    text_list.insert("end",t[0])
                    text_list.insert("end", t[1])
            if find_cnt == 0:
                text_list.insert("end", "没有找到匹配的题目")
                info_str.set("没有找到匹配的题目")
            else:
                info_str.set("找到{}个题目".format(find_cnt))
            key_input.delete(0, "end")


        button = tk.Button(begin, text='查询', command=bksearch)
        button.place(relx=0.55, y=20, height=40, relwidth=0.10)

        info_str = tk.StringVar()
        info = tk.Label(begin, textvariable = info_str )
        info.place(relx=0.68, y=20, height=40, relwidth=0.30)


        key_input.bind("<Return>", bksearch)

        text_list = tk.Text(begin, font=('微软雅黑', 11))
        text_list.place(relx=0.025, rely=0.2, relheight=0.75, relwidth=.95)


        # 返回
        def callback():
            if messagebox.askokcancel("退出", "是否退出{}?".format(self.AppName)):
                begin.destroy()
        begin.protocol("WM_DELETE_WINDOW", callback)
        begin.mainloop()




if __name__=="__main__":
    window = MainBox()
    window.window_begin()

运行界面:

程序(包含100道题目)打包地址:

https://download.csdn.net/download/seakingx/12256558

发布了23 篇原创文章 · 获赞 23 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/seakingx/article/details/104969528