Python tkinter Button 按鈕用法與範例

本篇 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.py
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
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.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
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['text'] = 'hello world' # 方法 1
mybutton.configure(text='hello world') # 方法 2
# mybutton.config(text='hello world') # 方法 3

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
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
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=lambda: mybutton.config(text='hello world')
)
mybutton.pack()

root.mainloop()

當按鈕事件處理函式裡只有短短一行程式碼時,就是個運用 lamdba 好時機的例子,改用 lamba 不一定比較好,還有程式的擴充性與維護性需要自行衡量。

tkinter 改變按鈕顏色

tkinter 改變按鈕顏色的方法如下,改變按鈕的 bgbackground 屬性即可,這邊示範兩個按鈕,button 1 原本背景顏色是黃色,按下按鈕後背景顏色會改變成紅色,而 button 2 原本背景顏色是綠色,按下按鈕後背景顏色會改變成橘色,

python3-button3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
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 改變按鈕大小的用法,修改按鈕的 widthheight 屬性即可,width 表示設定成 n 個字元的寬度,而 height 則是設定成 n 個字元的高度,修改按鈕的屬性除了上述的例子外,也可以用 config 的方式寫,

python3-button4.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
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.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
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.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
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 新手入門教學