《tkinter實用教程二》Button 控制元件
阿新 • • 發佈:2021-10-18
本教程是博主個人心血,如有引用,需在文章頂部標明引用資訊
tkinter Button 控制元件
如何在頂層視窗中建立一個 Button
如下程式碼在頂層視窗 root
中建立了一個名為 btn
的按鈕。
from tkinter import *
root = Tk()
btn = Button(root,text="第一個按鈕") #建立一個按鈕,並放置在root中
btn.pack() # 放置按鈕
root.mainloop()
以上程式碼執行完畢後,會彈出如下圖所示視窗。
按鈕中的文字由引數 text
指定。
除了引數 text
Button
時,還可以指定多種引數值,文章末尾會全部列出。
現在,我們只討論常用幾個引數。
如何指定按鈕樣式
Button
的樣式由引數 relief
指定,如下程式碼:
from tkinter import *
root = Tk()
btn = Button(root,text="第二個按鈕",relief=SUNKEN)
btn.pack()
root.mainloop()
relief
引數使用傳入的 SUNKEN
值,會建立一個如下圖所示的,和 “第一個按鈕” 截然不同的凹陷按鈕:
和 SUNKEN
同樣有意思的值還有很多,都列在下面啦,一個個去嘗試吧!
- RAISED='raised'
- SUNKEN='sunken'
- FLAT='flat'
- RIDGE='ridge'
- GROOVE='groove'
- SOLID = 'solid'
除了按鈕的3D樣式之外,我們常用的引數還有寬和高(width
和height
)。
如何制定按鈕的大小
和 relief
引數一樣,想要在建立按鈕的時候指定按鈕大小,只需要為 width
和 height
兩個引數傳入對應的值就好了。
from tkinter import * root = Tk() btn = Button(root,text="abcdefg",relief=GROOVE,width=7,height=6) btn.pack() root.mainloop()
以上程式碼建立了一個寬為7個字元,高為6行的按鈕,如下圖所示:
這個形狀奇特的按鈕,寬度恰好放下7個字元,高度正好能夠放下6行文字。
按鈕的寬和高是以字元數量和行數來確定的,如果是影象按鈕則是以畫素為單位的,不要忘了哦!!
以上程式碼還能寫成如下形式:
from tkinter import *
root = Tk()
btn = Button(root,text="abcdefg",relief=GROOVE)
btn['width']=6
btn['height']=7
btn.pack()
root.mainloop()
按鈕引數並不是必須在建立時指定,在完成建立之後,同樣可以通過以上方式進行更改。
這種寫法對所有控制元件都是有效的哦,並不是按鈕的特長!!
如何設定按鈕的背景顏色
以下程式碼建立了一個紅色背景的按鈕:
from tkinter import *
root = Tk()
btn = Button(root,text="第四個按鈕")
btn['bg']='red'
btn.pack()
root.mainloop()
程式碼執行結果如下圖:
其他引數的用法和以上引數的方式都是一樣的,在文末問列出所有的引數及其用途,不要錯過呦!!
如何為按鈕繫結事件
按鈕繫結點選事件是通過 command
進行的,相信讀到這裡,你已經知道如何做了:
from tkinter import *
def click():
btn['bg']='blue'
root = Tk()
btn = Button(root,text="點我吧",bg='red',command=click)
btn.pack()
root.mainloop()
以上程式碼建立了一個具有紅色背景的按鈕,並給 command
引數傳入了一個函式
在函式裡改變了按鈕的顏色。
執行結果如下:
點選之前
點選之後
所有可選引數表
以下是按鈕的所有引數及其介紹:
引數 | 描述 |
---|---|
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 | 如果此值設定為正數,文字行將被換行以適應此長度 |