《tkinter實用教程三》ttk.Button 控件


本教程是博主個人心血,未經允許不可引用,引用必舉報,舉報必封號。
博主個人博客【魏大王官網】,內容更精彩!!

《tkinter實用教程一》Linux 環境下安裝tkinter

《tkinter實用教程二》tkinter 子模塊 ttk

《tkinter實用教程三》tkinter Button 控件

《tkinter實用教程四》tkinter 布局管理 Grid

《tkinter實用教程五》tkinter ttk.Frame控件

tkinter ttk.Button 控件

本文主要介紹 tkinterttk.Button 控件的簡單用法和可選參數列表。

如何在頂層窗口中創建一個 ttk.Button

如下代碼在頂層窗口 root 中創建了一個名為 btn 的按鈕。

from tkinter import *
from tkinter import ttk

root = Tk()
btn = ttk.Button(root,text="第一個按鈕") #創建一個按鈕,並放置在root中
btn.pack() # 放置按鈕

root.mainloop() 

以上代碼執行完畢后,會彈出如下圖所示窗口。

btn_01.png

按鈕中的文字由參數 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 值,會創建一個如下圖所示的,和 “第一個按鈕” 截然不同的凸出按鈕:

btn_02.png

SUNKEN 同樣有意思的值還有很多,都列在下面啦,一個個去嘗試吧!

  • RAISED='raised'
  • SUNKEN='sunken'
  • FLAT='flat'
  • RIDGE='ridge'
  • GROOVE='groove'
  • SOLID = 'solid'

除了按鈕的3D樣式之外,我們常用的參數還有寬和高(widthheight)。

如何制定按鈕的大小

按鈕寬度由參數 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()

代碼執行結果,如下圖所示:

btn_03.png

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 參數傳入了一個函數
在函數里改變了按鈕的顏色。
執行結果如下:

點擊之前

btn_05_1.png

點擊之后

btn_05_2.png

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 子模塊 ttk

《tkinter實用教程三》tkinter Button 控件

《tkinter實用教程四》tkinter 布局管理 Grid

《tkinter實用教程五》tkinter ttk.Frame控件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM