python使用tkinter实现自定义多参数对话框
参数对话框
tkinter
提供了三种参数对话框,用于输出浮点型、整型和字符串,分别是 askfloat
, askinteger
以及 askstring
,使用方法如下
代码如下
import tkinter as tk from tkinter.simpledialog import * tk.Tk() # 相当于开启Tkinter服务 askfloat("askfloat", "please input float") # 3.1415926 askinteger("askinteger", "please input a integer number") # 299732458 askstring("askstring", "please input string") # 'tiny cool'
自定义参数对话框
这三个对话框一次只能输入一个参数,并不方便,但tkinter作为一个完备的开发框架,程序员完全可以自定义一个参数对话框,用于设置多组参数。
整体思路用到了Python中字典的地址引用的特性,即对于一个字典来说,当其作为参数传入一个函数后,在函数中更改某个key的值,会连带着改变函数外的这个字典。有点类似于C语言中指针作为参数时的情况。
所以,接下来设计一个Tk的子类AskDct,其初始化参数为一个字典,AskDct根据这个字典的key来生成输入控件,并根据输入控件的输入情况,来更改传进来的字典。
代码如下
import tkinter as tk import tkinter.ttk as ttk class AskDct(tk.Tk): def __init__(self, dct): super().__init__() self.title("请输入参数") self.dct = dct self.initWidgets() self.mainloop() def initWidgets(self): self.varDct = {} for i,key in enumerate(self.dct): self.varDct[key] = tk.StringVar() frm = tk.Frame(self) frm.pack(side=tk.TOP) ttk.Label(frm, text=key, width=10).pack(side=tk.LEFT, pady=2) ttk.Entry(frm, width=20, textvariable=self.varDct[key]).pack(side=tk.LEFT, pady=2) frm = tk.Frame(self) frm.pack(side=tk.TOP) ttk.Button(self, text="取消", width=10, command=self.btnCancel).pack(side=tk.RIGHT, pady=2) ttk.Button(self, text="确定", width=10, command=self.btnOK).pack(side=tk.RIGHT, pady=2) def btnOK(self): for key in self.dct: self.dct[key] = self.varDct[key].get() self.btnCancel() def btnCancel(self): self.destroy() self.quit()
其中,self.dct就是传递进来的字典,initWidgets根据这个字典来生成左右两列输入控件:左边是参数名,右边是参数的输入框。最下面是两个按钮,分别是取消按钮和设置按钮。
取消按钮绑定了btnCancel函数,直接销毁对象并退出窗口,但不对字典做任何操作。而btnOK则在退出之前,对字典进行赋值。
最后效果如下
到此这篇关于python使用tkinter实现自定义多参数对话框的文章就介绍到这了,更多相关python tkinter自定义对话框内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python干货实战之逆向登录世界上最大的游戏平台Stream
有些网页中的数据进行了算法加密 这些算法代码是JavaScript 加密的地方就是在js文件里,我们需要破解这些算法加密 就需要了解这加密的过程 获取加密过程中的代码 然后进行后续的反反爬虫操作2021-10-10告别网页搜索!教你用python实现一款属于自己的翻译词典软件
教你用python做一款属于自己的翻译词典软件,从此告别网页搜索,文中有非常详细的代码示例,小伙伴们快快行动吧,需要的朋友可以参考下2021-06-06tensorflow中tf.slice和tf.gather切片函数的使用
今天小编就为大家分享一篇tensorflow中tf.slice和tf.gather切片函数的使用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-01-01
最新评论