通过tkinter做一个简单的ui,输入关键字,查到对应结果(需要绑定后台查询方法)
# -*- coding=utf-8 -*- # ui_main.py import tkinter as tk import finder # 存放业务查询逻辑的模块 from threading import Thread window = tk.Tk() # 生成ui界面 window.title("查询工具") # 界面标题 window.geometry('600x400+300+100') # 窗口长600宽400,离左侧距离300,离顶部距离100 # value_str = tk.StringVar() # value_int = tk.IntVar() value = tk.StringVar() def thread(func, *args): """ 使用子线程调用func方法 :param func: :param args: :return: """ t = Thread(target=func, args=args) t.setDaemon(True) # 设置为启动线程的守护线程 t.start() def button(): """ 点击button按钮触发的方法,触发后调用后台查询模块finder获取值 :return: """ serviceId = srv_ipt.get() # 获取输入框的值 methodId = md_ipt.get() value.set("正在查询...") # 赋值给value,在label输出框展示 # print(finder.main(serviceId, methodId)[0]) if serviceId and methodId: if finder.main(serviceId, methodId): res_text = '结果行号:%s\n类型名称:%s\n结果数据:\n%s\n' % (finder.main(serviceId, methodId)[0], finder.main(serviceId, methodId)[1], finder.main(serviceId, methodId)[2]) else: res_text = "未找到数据" else: res_text = "请输入serviceid、methodid" value.set(res_text) # 容器1,搜索栏 frame1 = tk.Frame() # borderwidth=2边框宽度,relief=tk.RAISED 边框样式 # .pack() 为自适应模式,自动设置对应控件位置大小,.grid()为网格模式 frame1.pack(side=tk.TOP, # 组件在父级中放置的位置 fill=tk.BOTH, # 是否填充pack分配的空间,默认None保持组件原始尺寸,BOTH填充x(水平)和y(垂直)方向空间 ipadx=5, # 水平方向的内边距 ipady=10, # 垂直方向的内边距 padx=3, # 水平方向的外边距 pady=3 # 垂直方向的外边距 ) # serviceid输入框 tk.Label(frame1, text="serviceId:").pack(side='left', padx=5) # 输入框标题 srv_ipt = tk.Entry(frame1, show=None, font=("微软雅黑", 10)) # show文字的显示样式,None保持默认,'*'文字显示为*,密码使用 srv_ipt.pack(side='left', padx=10) # methodid输入框 tk.Label(frame1, text="methodId:").pack(side='left', padx=5) # 输入框标题 md_ipt = tk.Entry(frame1, show=None, font=("微软雅黑", 10)) md_ipt.pack(side='left', padx=10) # 查询按钮 search_btn = tk.Button(window, text="查询", width=15, height=3, command=lambda: thread(button)) # command,按钮点击时触发方法,使用子线程调用button方法,防止单线程执行时,干扰mainloop()方法,造成界面假死 search_btn.pack(side="top", fill=None, padx=15, pady=15) # 输出打印窗口 out_label = tk.Label(window, text="*** 查询中 ***", # 文本内容 textvariable=value, # tkinder变量的内容,变量变化时,lable中文本自动刷新 justify="left", # 文本对齐方式,取决于anchor的值 anchor="nw", # 文本所在方位,nw为北西 bg="black", # 背景色 fg="white", # 前景色 font=("微软雅黑", 10), # 字体设置 width=10, # label宽度 height=50, # label高度 padx=5, # 水平方向文本外边距 pady=3 # 垂直方向文本外边距 ) out_label.pack(side="bottom", fill="both", padx=10, pady=10, # ipadx=0, # 无法改变文字与边框的距离 ) if __name__ == "__main__": window.mainloop()
效果图:
标签:10,界面,text,查询,methodId,serviceId,tk,tkinter,pack From: https://www.cnblogs.com/tgzz/p/16742499.html