本篇 ShengYu 介紹 Python tkinter Button 按鈕用法與範例,Python GUI 程式設計最基本的就是建立按鈕與顯示按鈕以及處理按鈕事件,接下來就來學習怎麼用 tkinter 建立 Button 吧!
以下的 Python tkinter Button 用法與範例將分為這幾部分,
- tkinter 建立按鈕 Button
- tkinter 觸發按鈕事件來修改按鈕文字
- tkinter Button 搭配 lambda 運算式寫法
- tkinter 改變按鈕顏色
- tkinter 改變按鈕大小
- tkinter 按下按鈕離開程式
tkinter Button 的用法如下,一開始先用 tk.Button
建立一個按鈕,給這個按鈕一個顯示的文字 button
,再用一個變數 mybutton
來儲存回傳的 tk.Button
,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 以便處理按下該按鈕時要處理的邏輯,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
4def button_event():
# mybutton['text'] = 'hello world' # 方法 1
mybutton.configure(text='hello world') # 方法 2
# mybutton.config(text='hello world') # 方法 3
這邊介紹一下 tkinter Button 搭配 lambda 運算式的寫法,有些時候按鈕事件處理函式裡僅僅只是一行程式碼時,這時候就可以改用 lamdba 的寫法,根據上述例子的觸發按鈕事件修改按鈕文字的例子來說,部份程式碼如下,1
2
3
4
5def 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 改變按鈕顏色的方法如下,改變按鈕的 bg
或 background
屬性即可,這邊示範兩個按鈕,button 1 原本背景顏色是黃色,按下按鈕後背景顏色會改變成紅色,而 button 2 原本背景顏色是綠色,按下按鈕後背景顏色會改變成橘色,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 改變按鈕大小的用法,修改按鈕的 width
與 height
屬性即可,width
表示設定成 n 個字元的寬度,而 height
則是設定成 n 個字元的高度,修改按鈕的屬性除了上述的例子外,也可以用 config 的方式寫,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 表達式來傳遞不同參數。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
,而按下按鈕事件發生時就會呼叫離開程式,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 新手入門教學