Tkinter按鈕

Tkinter按鈕控制元件Button

Tkinter按鈕控制元件ButtonTkinter標籤非常相似。 它和Tkinter標籤具有幾乎相同的選項,除了它有一個額外的預設default選項。 我們將在演示完基本按鈕例子之後,再回到這個預設選項default的詳細資訊。

下面的程式碼生成了兩個非常簡單的按鈕。

Tkinter Button_Basic.py
from sys import version_info
if version_info.major == 2:
    import Tkinter as tk
elif version_info.major == 3:
    import tkinter as tk
    
app = tk.Tk()
button1 = tk.Button(app, text="Python Label 1")
button2 = tk.Button(app, text="Python Label 2")
button1.pack(side=tk.LEFT)
button2.pack(side=tk.LEFT)
app.mainloop()

在你執行程式碼後,會在視窗中顯示出兩個彼此相鄰的按鈕。

Tkinter教程-基本按鈕按鈕

Tkinter按鈕預設選項default

按鈕中的預設選項default通知GUI,該按鈕GUI中的預設按鈕。或者用一句簡單的話來說,當使用者按確認或回車鍵時,會自動調該按鈕。

Tkinter按鈕回撥命令

當使用者按下按鈕時,command選項會呼叫回撥函式。

Tkinter Button_command callback.py
from sys import version_info
if version_info.major == 2:
    import Tkinter as tk
elif version_info.major == 3:
    import tkinter as tk
    

    
app = tk.Tk()
labelExample = tk.Button(app, text="0")

def change_label_number():
    counter = int(str(labelExample['text']))
    counter += 1
    labelExample.config(text=str(counter))
    
buttonExample = tk.Button(app, text="Increase", width=30,
                          command=change_label_number)

buttonExample.pack()
labelExample.pack()
app.mainloop()

它在主視窗中建立了一個按鈕和一個標籤控制元件。當你每次單擊按鈕時,標籤文字中的數字都會加1。

Tkinter教程_按鈕命令回撥

def change_label_number():
    counter = int(str(labelExample['text']))
    counter += 1
    labelExample.config(text=str(counter))

change_label_number是單擊按鈕時被呼叫的回撥函式。該函式讀取標籤所顯示的數字,數字加1後再將新數字設定為標籤文字。

buttonExample = tk.Button(app, text="Increase", width=30,
                          command=change_label_number)

這句話繫結按鈕和回撥函式change_label_number

帶引數的命令回撥函式

如果回撥函式需要輸入引數,我們則需要functools中的partial物件。partial物件是帶有位置引數args和關鍵字引數keywords的可呼叫物件。

下面的程式碼片段演示瞭如何在按鈕命令中使用這個partial功能。

def change_label_number(num):
    counter = int(str(labelExample['text']))
    counter += num
    labelExample.config(text=str(counter))
    
buttonExample = tk.Button(app, text="Increase", width=30,
                          command=partial(change_label_number, 2))