Python?tkinter中四個常用按鈕的用法總結(jié)
四大按鈕
tkinter中有四個控件被冠以Button之名,分別是:Button, Checkbutton, Radiobutton, Menubutton,但后三種其實說不上是按鈕,Checkbutton是單選框;Radiobutton其實更類似于Combobox;Menubutton則是菜單。
這幾種按鈕雖然功能各異,但都具有下面這些屬性,這些屬性屬于非常通用的屬性,并且在控件樣式中也以Button為例,展示過了,本文就不再贅述。既然以四大按鈕為題,那么就要稍微有點深度,展示一些此前不曾展示過的高級功能。
| 屬性 | 說明 |
|---|---|
| background/bg | 背景色 |
| borderwidth/bd | 邊框?qū)挾?/td> |
| foreground/fg | 前景色 |
| state | 狀態(tài) |
| font | 字體 |
| width, height | 寬度,高度 |
| padx,pady | 水平外間距,垂直外間距 |
| text | 顯示文本 |
| justify | 多行文本對齊方式 |
| relief | 邊框樣式 |
| underline | 下劃線 |
| wraplength | 換行寬度 |
Button連擊
Button可通過repeatdelay和repeatinterval來控制連擊操作。
正常情況下,只有按下鼠標然后再抬起,才算是一次點擊事件。而tkinter中點擊的邏輯則是,如果按下按鈕不松手,那么等待repeatdelay時間后,每隔repeatinterval就算是一次點擊。
下面寫代碼測試一下
import tkinter as tk
root = tk.Tk()
v = tk.StringVar()
iClick = 0
v.set(f"點擊{iClick}次")
def click():
global iClick
iClick += 1
v.set(f"點擊{iClick}次")
tk.Button(root, height=3, width=15,
font = ('黑體', 60, 'bold'), command=click,
repeatdelay=1000, repeatinterval=300,
textvariable=v).pack(side=tk.TOP, fill=tk.BOTH)
root.mainloop()其含義是,每點擊一次,iClick就加一,而按鈕自身的設(shè)置是,如果按下按鈕1000毫秒不松手,那么接下來每隔300毫秒就算一次點擊。效果如下

Menubutton
Menubutton的特色當然是設(shè)置菜單,所以想用Menubutton,前提是有一個菜單。而在設(shè)置菜單過程中,可通過direction屬性,來設(shè)置菜單位置。如果不設(shè)置direction,菜單會出現(xiàn)在按鈕的下方,下面將direction設(shè)置為另外三個方向
import tkinter as tk
root = tk.Tk()
root.geometry("400x200")
def setMenu(root, mb, text):
m = tk.Menu(mb)
for i in range(3):
m.add_command(label=f"{text}{i}")
m.add_separator()
m.add_command(label="退出", command=root.quit)
return m
frm = tk.Frame(root)
frm.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
for d in ["above", "left", "right"]:
mb = tk.Menubutton(frm, text=d, direction=d)
mb.pack(side=tk.LEFT)
m = setMenu(root, mb, d)
mb.config(menu=m)
root.mainloop()效果如下

Checkbutton
Checkbutton和不同Button相比是多了一個可供勾選的功能,與此同時也就具備了選中和未選中兩種狀態(tài)。這兩種狀態(tài)默認是1和0,但在Checkbutton中,可通過offvalue和onvalue來設(shè)置未選中和已經(jīng)選中的值。
而綁定Checkbutton的選中狀態(tài)的參數(shù)是variable。
root = tk.Tk()
root.geometry("400x200")
frm = tk.Frame(root)
frm.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
v = tk.StringVar()
font = ('黑體', 20, 'bold')
Checkbutton(frm, text="單選框", font=font, variable=v,
offvalue="未選中", onvalue="選中了").pack(side=tk.LEFT)
tk.Label(frm, font=font, textvariable=v).pack(side=tk.LEFT)
root.mainloop()效果如下

Radiobutton
Radiobutton可以看成是無法同時選中的多個Checkbutton,所以也通過variable來作為關(guān)聯(lián)變量,作為當前被選中的值。但由于有多個值,所以也就沒有類似offvalue和onvalue這樣的參數(shù)了。
root = tk.Tk()
v = StringVar(1)
frm = tk.Frame(root)
frm.place(relx=0.5, rely=0.3, anchor=tk.CENTER)
font = ('黑體', 20, 'bold')
for i in range(4):
Radiobutton(root, text=f"Radio{i}", font=font,
variable=v, value=i).pack(side=tk.LEFT)
frm = tk.Frame(root)
frm.place(relx=0.5, rely=0.7, anchor=tk.CENTER)
tk.Label(frm, font=font, textvariable=v).pack(side=tk.TOP)
root.mainloop()結(jié)果如下

到此這篇關(guān)于Python tkinter中四個常用按鈕的用法總結(jié)的文章就介紹到這了,更多相關(guān)Python tkinter按鈕內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Flask-Cache緩存實現(xiàn)給Flask提速的方法詳解
這篇文章主要介紹了使用Flask-Cache緩存實現(xiàn)給Flask提速的方法,結(jié)合實例形式詳細分析了Flask-Cache的安裝、配置及緩存使用相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
matplotlib交互式數(shù)據(jù)光標mpldatacursor的實現(xiàn)
這篇文章主要介紹了matplotlib交互式數(shù)據(jù)光標mpldatacursor的實現(xiàn) ,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02
python實現(xiàn)文件名批量替換和內(nèi)容替換
這篇文章主要介紹了python實現(xiàn)文件名批量替換和內(nèi)容替換,第一個例子可以指定文件類型,需要的朋友可以參考下2014-03-03

