1. 程式人生 > 其它 >《tkinter實用教程二》Button 控制元件

《tkinter實用教程二》Button 控制元件

本教程是博主個人心血,如有引用,需在文章頂部標明引用資訊

《tkinter實用教程二》Button 控制元件

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樣式之外,我們常用的引數還有寬和高(widthheight)。

如何制定按鈕的大小

relief 引數一樣,想要在建立按鈕的時候指定按鈕大小,只需要為 widthheight 兩個引數傳入對應的值就好了。

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 如果此值設定為正數,文字行將被換行以適應此長度
我的個人部落格 魏大王(weidawang.xyz),找我一起玩耍吧!!