button控件是Tkinter中常用的窗口部件之一,同時也是實現程序與用戶交互的主要控件。用戶通過點擊按鈕的行爲來執行回調函數,是Button控件的主要功能。
button控件的使用方法:首先自定義一個函數或者方法,然後將函數與按鈕關聯起來,最後,儅用戶按下這個按鈕時,Tkinter就會自動調用相關函數。
按鈕控件同樣包含文本、圖像、位圖、并通過command參數回調函數。button也可以不執行回調函數,此時button控件只是個“擺設”。button控件的代碼案例如下所示:
import tkinter as tk
#創建主窗口
window = tk.Tk()
#設置回調函數
def callback():
print("click me!")
#使用按鈕控件調用函數
button_set = tk.Button(window, text = "點擊執行回調函數", command = callback()).pack()
#循環顯示主窗口
tk.mainloop()
代碼運行結果如下所示:
button控件的常用屬性如下所示:
屬性 | 説明 |
anchor | 控制文本所在的位置,默認為中心位置(center) |
activebackground | 儅鼠標放在按鈕上時,按鈕的背景顔色 |
activeforeground | 儅鼠標放在按鈕上時,按鈕的前景色 |
bd | 按鈕邊框的大小,默認為2個像素 |
bg | 按鈕的背景色 |
command | 用來執行按鈕關聯的回調函數。儅按鈕被點擊時,執行該函數 |
fg | 按鈕的前景色 |
font | 按鈕文本的字體樣式 |
height | 按鈕高度 |
heightlightcolor | 按鈕控件高亮処的顔色 |
image | 按鈕上要顯示的圖片 |
justify | 按鈕顯示多行文本時,用來指定文本的對齊方式,參數值由LEFT/RIGHT/CENTER |
padx/pady | padx/pady指定水平方向/垂直方向的間距大小 |
ipadx/ipady | ipadx/ipady指標簽文字與標簽容器之間的橫向距離/縱向距離 |
state | 設置按鈕的可用狀態,可選參數有NORMAL/ACTIVE/DISABLED,默認為NORMAL |
text | 按鈕控件顯示的文本 |
除了Button控件之外,還有其他形式的控件如復選控件(Checkbutton)、單選框控件(Radiobutton),這會在後續的學習中出現。
button代碼示例1:
import tkinter as tk
from tkinter import messagebox
#設置主窗口
window = tk.Tk()
#設置窗口的標題
window.title("demo example")
#設置并調整窗口的大小、位置
window.geometry("400x300+300+200")
#設置button控件的回調函數
def click_button():
#使用消息對話框控件,showinfo()表示溫馨提示
messagebox.showinfo(title = "Warm prompt", message = "button demo example")
#設置button控件
button = tk.Button(window, text = "Click", bg = "#7CCD7C", width = 20, height = 5, command = click_button).pack()
#循環顯示窗口
window.mainloop()
代碼運行結果如下所示:
由上述示例可知,Button控件的作用就是執行一個函數,當用戶點擊按鈕時會彈出一個新的對話框,這種操作提升了用戶的人機交互體驗。因此,按鈕控件在GUI變成中被廣汎的使用。
下面實例為Button控件添加一張背景圖片,實現代碼如下所示:
import tkinter as tk
from tkinter import messagebox
#設置主窗口
window = tk.Tk()
#設置主窗口的標題
window.title("demo example")
#設置窗口的大小
window.geometry("400x300+300+200")
#設置button控件的回調函數
def click_button():
#使用信息對話空間,showinfo()表示溫馨提示
messagebox.showinfo(title = "warm prompt", message = "button demo example")
#創建圖片對象
image_set = tk.PhotoImage(file = "G:/python/2025/2.gif")
#通過image參數傳遞圖片對象
button = tk.Button(window, image = image_set, command = click_button).pack()
#循環顯示窗口
window.mainloop()
代碼運行結果如下所示:
注意:button控件的佈局
button在主窗口中的佈局,通常使用grid()函數來完成,該函數以網格狀的形式(即行和列)來管理窗口的佈局。
grid()佈局管理器提供了一個sticky參數,通過該參數可以設置按鈕的方位,該參數默認將控件設置居中,其他參數有N/S/W/E(上/下/左/右),而且可以組合在一起使用,比如NW/WE/SE/SW/NE等,具體如下圖所示:
特別注意:grid()佈局方法不能與pack()混合在一起使用。具體代碼示例如下所示:
import tkinter as tk
from tkinter import messagebox
#設置主窗口
window = tk.Tk()
#設置主窗口名
window.title("demo example")
#設置主窗口logo
#window.iconbitmap("C:/Users/Administrator/Desktop/example_logo_ico")
#設置主窗口大小
window.geometry("400x200+100+100")
#禁止用戶修改主窗口大小
window.resizable(0,0)
#將兩個標簽分別佈置在第一行、第二行
tk.Label(window, text = "賬號: ").grid(row = 0)
tk.Label(window, text = "密碼: ").grid(row = 1)
#創建輸入框控件
set_entry_1 = tk.Entry(window)
#以*的形式顯示密碼
set_entry_2 = tk.Entry(window, show = "*")
set_entry_1.grid(row = 0, column = 1, padx = 10, pady = 5)
set_entry_2.grid(row = 1, column = 1, padx = 10, pady = 5)
#設置button回調函數
def login():
#使用信息對話控件
messagebox.showinfo("welcome")
#使用grid()函數來佈局,并且控制button控件的顯示位置
tk.Button(window, text = "login", width = 10, command = login).grid(row = 3, column = 0, sticky = "w", padx = 10, pady = 5)
tk.Button(window, text = "quit", width = 10, command = window.quit).grid(row = 3, column = 1, sticky = "e", padx = 10, pady = 5)
#循環主窗口
window.mainloop()
代碼運行結果如下所示: