利用 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章