当前位置: 代码迷 >> 综合 >> 利用 tkinter 实现题库查询功能 [控件大小自适应界面变化]
  详细解决方案

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

热度:48   发布时间:2024-01-15 21:39:46.0

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

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

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

数据包含100道题目。

 

# encoding: utf-8
"""
@author: seakingx
@contact: hndm@qq.com
@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 = 0t_text = ""t_item = []t_list = []for t in txt_list:if t.strip() == "":continueif t.find("答案") >= 0:t_i = t_i + 1t_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 = 0for t in self.datalist:if t[0].find(key_str)>0:find_cnt = find_cnt + 1text_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

  相关解决方案