欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python使用tkinter實(shí)現(xiàn)自定義多參數(shù)對(duì)話框

 更新時(shí)間:2023年08月24日 09:08:14   作者:微小冷  
Tkinter模塊是Python標(biāo)準(zhǔn)庫中的一部分,用于創(chuàng)建圖形用戶界面(GUI)應(yīng)用程序,它提供了一組工具和組件,用于創(chuàng)建窗口、按鈕、文本框等用戶界面元素,并且可以響應(yīng)用戶的輸入,本文將給大家講講python如何使用tkinter實(shí)現(xiàn)自定義多參數(shù)對(duì)話框

參數(shù)對(duì)話框

tkinter 提供了三種參數(shù)對(duì)話框,用于輸出浮點(diǎn)型、整型和字符串,分別是 askfloat , askinteger 以及 askstring ,使用方法如下

在這里插入圖片描述

代碼如下

import tkinter as tk
from tkinter.simpledialog import *
tk.Tk()     # 相當(dāng)于開啟Tkinter服務(wù)
askfloat("askfloat", "please input float")
# 3.1415926
askinteger("askinteger", "please input a integer number")
# 299732458
askstring("askstring", "please input string")
# 'tiny cool'

自定義參數(shù)對(duì)話框

這三個(gè)對(duì)話框一次只能輸入一個(gè)參數(shù),并不方便,但tkinter作為一個(gè)完備的開發(fā)框架,程序員完全可以自定義一個(gè)參數(shù)對(duì)話框,用于設(shè)置多組參數(shù)。

整體思路用到了Python中字典的地址引用的特性,即對(duì)于一個(gè)字典來說,當(dāng)其作為參數(shù)傳入一個(gè)函數(shù)后,在函數(shù)中更改某個(gè)key的值,會(huì)連帶著改變函數(shù)外的這個(gè)字典。有點(diǎn)類似于C語言中指針作為參數(shù)時(shí)的情況。

所以,接下來設(shè)計(jì)一個(gè)Tk的子類AskDct,其初始化參數(shù)為一個(gè)字典,AskDct根據(jù)這個(gè)字典的key來生成輸入控件,并根據(jù)輸入控件的輸入情況,來更改傳進(jìn)來的字典。

代碼如下

import tkinter as tk
import tkinter.ttk as ttk
class AskDct(tk.Tk):
    def __init__(self, dct):
        super().__init__()
        self.title("請(qǐng)輸入?yún)?shù)")
        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就是傳遞進(jìn)來的字典,initWidgets根據(jù)這個(gè)字典來生成左右兩列輸入控件:左邊是參數(shù)名,右邊是參數(shù)的輸入框。最下面是兩個(gè)按鈕,分別是取消按鈕和設(shè)置按鈕。

取消按鈕綁定了btnCancel函數(shù),直接銷毀對(duì)象并退出窗口,但不對(duì)字典做任何操作。而btnOK則在退出之前,對(duì)字典進(jìn)行賦值。

最后效果如下

在這里插入圖片描述

到此這篇關(guān)于python使用tkinter實(shí)現(xiàn)自定義多參數(shù)對(duì)話框的文章就介紹到這了,更多相關(guān)python tkinter自定義對(duì)話框內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論