本教程是博主個人心血,未經允許不可引用,引用必舉報,舉報必封號。
博主個人博客【魏大王官網】,內容更精彩!!
《tkinter實用教程一》Linux 環境下安裝tkinter
《tkinter實用教程三》tkinter Button 控件
《tkinter實用教程四》tkinter 布局管理 Grid
《tkinter實用教程五》tkinter ttk.Frame控件
tkinter ttk.Button 控件
本文主要介紹 tkinter
中 ttk.Button
控件的簡單用法和可選參數列表。
如何在頂層窗口中創建一個 ttk.Button
如下代碼在頂層窗口 root
中創建了一個名為 btn
的按鈕。
from tkinter import *
from tkinter import ttk
root = Tk()
btn = ttk.Button(root,text="第一個按鈕") #創建一個按鈕,並放置在root中
btn.pack() # 放置按鈕
root.mainloop()
以上代碼執行完畢后,會彈出如下圖所示窗口。
按鈕中的文字由參數 text
指定。
除了參數 text
之外,在創建一個 Button
時,還可以指定多種參數值,文章末尾會全部列出。
現在,我們只討論常用幾個參數。
如何指定 ttk.Button 樣式
Button
的3D樣式由參數 relief
指定,如下代碼創建了一個紅色字體,藍色背景的凸出按鈕:
from tkinter import *
from tkinter import ttk
root = Tk()
style_default = ttk.Style()
style_default.theme_use('classic')
style_default.configure("TButton",foreground="red",background="blue",relief=RAISED)
btn = ttk.Button(root,text="第二個按鈕")
btn.pack()
root.mainloop()
relief
參數使用傳入的 RAISED
值,會創建一個如下圖所示的,和 “第一個按鈕” 截然不同的凸出按鈕:
和 SUNKEN
同樣有意思的值還有很多,都列在下面啦,一個個去嘗試吧!
- RAISED='raised'
- SUNKEN='sunken'
- FLAT='flat'
- RIDGE='ridge'
- GROOVE='groove'
- SOLID = 'solid'
除了按鈕的3D樣式之外,我們常用的參數還有寬和高(width
和height
)。
如何制定按鈕的大小
按鈕寬度由參數 width
指定,以下代碼創建了一個寬度為17個字符的按鈕:
from tkinter import *
from tkinter import ttk
root = Tk()
style = ttk.Style()
style.configure("TButton",width=17)
btn = ttk.Button(text="abcdefg",style='TButton')
btn.pack()
root.mainloop()
代碼執行結果,如下圖所示:
ttk.Button
控件和 tkinter
原生按鈕不同,不具備 height
參數,具體原因目前還不清楚,還在學習過程中。
按鈕的寬以字符數量來確定的,如果是圖像按鈕則是以像素為單位的,不要忘了哦!!
以上代碼還能寫成如下形式:
from tkinter import *
from tkinter import ttk
root = Tk()
btn = ttk.Button(root,text="abcdefg",width=17)
btn.pack()
root.mainloop()
這種方式只對
width
參數有用,其他樣式參數還是要使用Style
傳入!!
如何更改 ttk 控件樣式
按鈕綁定點擊事件是通過 command
進行的,相信讀到這里,你已經知道如何做了。
如果我們希望在點擊按鈕之后,按鈕的背景顏色由紅色變為藍色,那么代碼按照下面的方式寫:
import tkinter
from tkinter import ttk
def click():
btn['style']='C.TButton'
root = tkinter.Tk()
s1 = ttk.Style()
s2 = ttk.Style()
s1.configure("TButton",background='red')
s2.configure("C.TButton",background="blue")
btn = ttk.Button(text='btn',command=click)
btn.pack()
root.mainloop()
以上代碼創建了一個具有紅色背景的按鈕,並給 command
參數傳入了一個函數
在函數里改變了按鈕的顏色。
執行結果如下:
點擊之前
點擊之后
ttk
背景顏色並沒有完全覆蓋整個按鈕,這是和主題風格有關的,如果有感興趣的朋友,可以留言。
所有可選參數表
以下是 tkinter
原生按鈕的所有參數及其介紹:
參數 | 描述 |
---|---|
activebackground | 按鈕在光標下時的背景顏色 |
activebackground | 按鈕在光標下時的前景顏色 |
anchor | 文本在按鈕上的位置。 例如,anchor=tk.NE 會將文本放置在按鈕的右上角 |
bd 或者 borderwidth | 按鈕外部的邊框寬度,默認是兩個像素 |
bg 或者 background | 正常狀態下的背景色 |
bitmap | 要在按鈕上顯示的標准位圖之一的名稱(而不是文本)。 |
command | 單擊按鈕時要調用的函數或方法。 |
cursor | 選擇當鼠標懸停在按鈕上時顯示的光標 |
default | tk.NORMAL 是默認值; 如果按鈕最初被禁用(變灰,對鼠標點擊無響應),請使用 tk.DISABLED |
disabledforeground | 禁用按鈕時使用的前景色 |
fg 或者 foreground | 正常的前景色(文本)顏色 |
font | 用於按鈕的文本字體 |
height | 以文本行(對於文本按鈕)或像素(對於圖像)為單位的按鈕高度 |
highlightbackground | 按鈕有焦點時的高亮背景色 |
highlightcolor | 控件有焦點時焦點高亮的顏色 |
highlightthickness | 焦點高光的厚度 |
image | 展示在按鈕上的圖片(而不是文字) |
justify | 如何顯示多行文本: tk.LEFT 左對齊每一行;tk.CENTER 將它們居中; 或 tk.RIGHT 右對齊 |
overrelief | 鼠標在按鈕上時使用的浮雕樣式; 默認樣式是 tk.RAISED |
padx | 文本左側和右側的附加填充 |
pady | 文本上側和下冊的附加填充 |
relief | 指定按鈕的浮雕類型。默認浮雕tk.RAISED |
repeatdelay | 請參閱下面的repeatinterval |
repeatinterval | 通常,當用戶釋放鼠標按鈕時,按鈕只會觸發一次。如果您希望按鈕在按住鼠標按鈕時按固定間隔觸發,請將此選項設置為要在重復之間使用的毫秒數,並將 repeatdelay 設置為在開始重復之前等待的毫秒數。例如,如果您指定“ repeatdelay=500, repeatinterval=100”按鈕將在半秒后觸發,此后每十分之一秒觸發一次,直到用戶釋放鼠標按鈕。 如果用戶沒有按住鼠標按鈕至少 repeatdelay 毫秒,按鈕將正常觸發。 |
state | 將此選項設置為 tk.DISABLED 以使按鈕變灰並使其無響應。 當鼠標懸停在其上方時,其值為 tk.ACTIVE。 默認值為 tk.NORMAL |
takefocus | 通常,鍵盤焦點會訪問按鈕,空格字符的作用與鼠標單擊相同,“按下”按鈕。 您可以將 takefocus 選項設置為零以防止焦點訪問按鈕 |
text | 按鈕上顯示的文本。 使用內部換行符顯示多個文本行 |
textvariable | 與此按鈕上的文本相關聯的 StringVar() 實例。 如果變量更改,新值將顯示在按鈕上 |
underline | 默認值為 -1,這意味着按鈕上的文本字符將不帶有下划線。 如果非負,相應的文本字符將被划線。 例如,underline=1 將在按鈕文本的第二個字符下划線。 |
width | 以字母(如果顯示文本)或像素(如果顯示圖像)為單位的按鈕寬度 |
wraplength | 如果此值設置為正數,文本行將被換行以適應此長度 |
《tkinter實用教程一》Linux 環境下安裝tkinter
《tkinter實用教程三》tkinter Button 控件