本篇 ShengYu 介紹 Python tkinter Button 按鈕用法與範例,Python GUI 程式設計最基本的就是建立按鈕與顯示按鈕以及處理按鈕事件,接下來就來學習怎麼用 tkinter 建立 Button 吧!
以下的 Python tkinter Button 用法與範例將分為這幾部分,
- tkinter 建立按鈕 Button
- tkinter 觸發按鈕事件來修改按鈕文字
- tkinter Button 搭配 lambda 運算式寫法
- tkinter 改變按鈕顏色
- tkinter 改變按鈕大小
- tkinter 按下按鈕離開程式
tkinter 建立按鈕 Button
tkinter Button 的用法如下,一開始先用 tk.Button
建立一個按鈕,給這個按鈕一個顯示的文字 button
,再用一個變數 mybutton
來儲存回傳的 tk.Button
,
python3-button.py1 2 3 4 5 6 7 8 9 10 11
|
import tkinter as tk root = tk.Tk() root.title('my window') root.geometry('200x150')
mybutton = tk.Button(root, text='button') mybutton.pack()
root.mainloop()
|
如果你不需要用變數去儲存 tk.Button
的話,就可以濃縮寫成這樣一行,
1
| tk.Button(root, text='button').pack()
|
結果圖如下,
tkinter 觸發按鈕事件來修改按鈕文字
這邊要示範 tkinter 觸發 Button 按鈕事件來修改按鈕文字,新增一個函式為 button_event,並在建立 tk.Button
時指定 command=button_event
事件處理函式,而按鈕事件發生時就會呼叫到 button_event 以便處理按下該按鈕時要處理的邏輯,
python3-button2.py1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
import tkinter as tk root = tk.Tk() root.title('my window') root.geometry('200x150')
def button_event(): mybutton['text'] = 'hello world'
mybutton = tk.Button(root, text='button', command=button_event) mybutton.pack()
root.mainloop()
|
點擊 button 後的結果圖如下,
改變按鈕文字的寫法除了上述的方法以外,還可以用另外兩種寫法,如下例所示,
1 2 3 4
| def button_event(): mybutton.configure(text='hello world')
|
tkinter Button 搭配 lambda 運算式寫法
這邊介紹一下 tkinter Button 搭配 lambda 運算式的寫法,有些時候按鈕事件處理函式裡僅僅只是一行程式碼時,這時候就可以改用 lamdba 的寫法,根據上述例子的觸發按鈕事件修改按鈕文字的例子來說,部份程式碼如下,
1 2 3 4 5
| def button_event(): mybutton['text'] = 'hello world'
mybutton = tk.Button(root, text='button', command=button_event) mybutton.pack()
|
改成 lambda 寫法以後,將原本 button_event 函式裡的程式碼放在 lambda 運算式裡,就可以移除 button_event 這個函式了,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
import tkinter as tk root = tk.Tk() root.title('my window') root.geometry('200x150')
mybutton = tk.Button(root, text='button', command=lambda: mybutton.config(text='hello world') ) mybutton.pack()
root.mainloop()
|
當按鈕事件處理函式裡只有短短一行程式碼時,就是個運用 lamdba 好時機的例子,改用 lamba 不一定比較好,還有程式的擴充性與維護性需要自行衡量。
tkinter 改變按鈕顏色
tkinter 改變按鈕顏色的方法如下,改變按鈕的 bg
或 background
屬性即可,這邊示範兩個按鈕,button 1 原本背景顏色是黃色,按下按鈕後背景顏色會改變成紅色,而 button 2 原本背景顏色是綠色,按下按鈕後背景顏色會改變成橘色,
python3-button3.py1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
import tkinter as tk root = tk.Tk() root.title('my window') root.geometry('200x150')
def button_event1(): mybutton1['bg'] = 'red' mybutton1['text'] = 'red button'
def button_event2(): mybutton2['bg'] = 'orange' mybutton2['text'] = 'orange button'
mybutton1 = tk.Button(root, text='button 1', bg='yellow', command=button_event1) mybutton2 = tk.Button(root, text='button 2', bg='green', command=button_event2) mybutton1.pack() mybutton2.pack()
root.mainloop()
|
點擊 button 2 後的結果圖如下,
tkinter 改變按鈕大小
這邊示範 tkinter 改變按鈕大小的用法,修改按鈕的 width
與 height
屬性即可,width
表示設定成 n 個字元的寬度,而 height
則是設定成 n 個字元的高度,修改按鈕的屬性除了上述的例子外,也可以用 config 的方式寫,
python3-button4.py1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
import tkinter as tk root = tk.Tk() root.title('my window') root.geometry('200x150')
def button_event1(): mybutton1.config(width='20', height='2')
def button_event2(): mybutton2.config(width='20', height='3')
mybutton1 = tk.Button(root, text='button 1', command=button_event1) mybutton2 = tk.Button(root, text='button 2', command=button_event2) mybutton1.pack() mybutton2.pack()
root.mainloop()
|
點擊 button 1 後的結果圖如下,
我們可以把程式碼寫得漂亮一點,由於兩個按鈕事件裡面的邏輯都是一樣的,所以可以把這兩個函式合併成一個,在透過 configure 指定 lambda 表達式來傳遞不同參數。
python3-button5.py1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
import tkinter as tk root = tk.Tk() root.title('my window') root.geometry('200x150')
def button_event(button, w, h): button.config(width=w, height=h)
mybutton1 = tk.Button(root, text='button 1') mybutton1.configure(command=lambda: button_event(mybutton1,20,2)) mybutton2 = tk.Button(root, text='button 2') mybutton2.configure(command=lambda: button_event(mybutton2,20,3)) mybutton1.pack() mybutton2.pack()
root.mainloop()
|
tkinter 按下按鈕離開程式
這邊介紹 tkinter 按下按鈕離開程式,在建立 tk.Button
時指定 command=root.destroy
,而按下按鈕事件發生時就會呼叫離開程式,
python3-button6.py1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
import tkinter as tk root = tk.Tk() root.title('my window') root.geometry('200x150')
def button_event(): mybutton1['text'] = 'button event'
mybutton1 = tk.Button(root, text='button', command=button_event) mybutton2 = tk.Button(root, text='exit', command=root.destroy) mybutton1.pack(side=tk.LEFT) mybutton2.pack(side=tk.LEFT)
root.mainloop()
|
以上就是 Python tkinter Button 按鈕用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!
其它相關文章推薦
Python tkinter 修改按鈕文字的 2 種方式
Python 新手入門教學懶人包
Python tkinter 新手入門教學