python使用tkinter实现自定义多参数对话框

 更新时间:2023年08月24日 09:08:14   作者:微小冷  
Tkinter模块是Python标准库中的一部分,用于创建图形用户界面(GUI)应用程序,它提供了一组工具和组件,用于创建窗口、按钮、文本框等用户界面元素,并且可以响应用户的输入,本文将给大家讲讲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中的内置函数map

    深入理解Python中的内置函数map

    在Python中,map是一个非常实用的内置函数,它允许你对一个序列的所有元素执行特定的操作,map函数的结果可以被转换为一个列表,或者其他的可迭代对象,在本文中,我们将深入探讨map函数的用法及其在实际编程中的应用
    2023-06-06
  • Python中的yield浅析

    Python中的yield浅析

    这篇文章主要介绍了Python中的yield浅析,对迭代器(iterator) 、生成器(constructor)一并做了分析,并用实例来说明,需要的朋友可以参考下
    2014-06-06
  • Python干货实战之逆向登录世界上最大的游戏平台Stream

    Python干货实战之逆向登录世界上最大的游戏平台Stream

    有些网页中的数据进行了算法加密 这些算法代码是JavaScript 加密的地方就是在js文件里,我们需要破解这些算法加密 就需要了解这加密的过程 获取加密过程中的代码 然后进行后续的反反爬虫操作
    2021-10-10
  • python自动循环定时开关机(非重启)测试

    python自动循环定时开关机(非重启)测试

    这篇文章主要为大家详细介绍了python自动循环定时开关机(非重启)测试,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • 告别网页搜索!教你用python实现一款属于自己的翻译词典软件

    告别网页搜索!教你用python实现一款属于自己的翻译词典软件

    教你用python做一款属于自己的翻译词典软件,从此告别网页搜索,文中有非常详细的代码示例,小伙伴们快快行动吧,需要的朋友可以参考下
    2021-06-06
  • python使用PyGame实现打砖块游戏

    python使用PyGame实现打砖块游戏

    打砖块也是一个非常经典的小游戏,玩法大致如下,用一个小车接一个小球,然后反射小球,使之打在砖块上,当小球碰到砖块之后,则砖块被消掉,逻辑十分清晰,本文将给大家介绍了python使用PyGame实现打砖块游戏,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2023-12-12
  • 如何Tkinter模块编写Python图形界面

    如何Tkinter模块编写Python图形界面

    本文讲解为何使用Tkinter而非PyQt,创建一个基本的Tkinter程序,模块化Tkinter程序,希望对大家有帮助。
    2020-10-10
  • Python小白垃圾回收机制入门

    Python小白垃圾回收机制入门

    在本篇文章里小编给大家分享的是关于Python小白垃圾回收机制入门的相关知识点,需要的朋友们可以参考下。
    2020-06-06
  • tensorflow中tf.slice和tf.gather切片函数的使用

    tensorflow中tf.slice和tf.gather切片函数的使用

    今天小编就为大家分享一篇tensorflow中tf.slice和tf.gather切片函数的使用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Django中的事务ATOMIC_REQUESTS

    Django中的事务ATOMIC_REQUESTS

    这篇文章主要介绍了Django中的事务ATOMIC_REQUESTS使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论