Python?tkinter中四個(gè)常用按鈕的用法總結(jié)
四大按鈕
tkinter中有四個(gè)控件被冠以Button之名,分別是:Button, Checkbutton, Radiobutton, Menubutton,但后三種其實(shí)說(shuō)不上是按鈕,Checkbutton是單選框;Radiobutton其實(shí)更類(lèi)似于Combobox;Menubutton則是菜單。
這幾種按鈕雖然功能各異,但都具有下面這些屬性,這些屬性屬于非常通用的屬性,并且在控件樣式中也以Button為例,展示過(guò)了,本文就不再贅述。既然以四大按鈕為題,那么就要稍微有點(diǎn)深度,展示一些此前不曾展示過(guò)的高級(jí)功能。
屬性 | 說(shuō)明 |
---|---|
background/bg | 背景色 |
borderwidth/bd | 邊框?qū)挾?/td> |
foreground/fg | 前景色 |
state | 狀態(tài) |
font | 字體 |
width, height | 寬度,高度 |
padx,pady | 水平外間距,垂直外間距 |
text | 顯示文本 |
justify | 多行文本對(duì)齊方式 |
relief | 邊框樣式 |
underline | 下劃線 |
wraplength | 換行寬度 |
Button連擊
Button可通過(guò)repeatdelay和repeatinterval來(lái)控制連擊操作。
正常情況下,只有按下鼠標(biāo)然后再抬起,才算是一次點(diǎn)擊事件。而tkinter中點(diǎn)擊的邏輯則是,如果按下按鈕不松手,那么等待repeatdelay時(shí)間后,每隔repeatinterval就算是一次點(diǎn)擊。
下面寫(xiě)代碼測(cè)試一下
import tkinter as tk root = tk.Tk() v = tk.StringVar() iClick = 0 v.set(f"點(diǎn)擊{iClick}次") def click(): global iClick iClick += 1 v.set(f"點(diǎn)擊{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()
其含義是,每點(diǎn)擊一次,iClick就加一,而按鈕自身的設(shè)置是,如果按下按鈕1000毫秒不松手,那么接下來(lái)每隔300毫秒就算一次點(diǎn)擊。效果如下
Menubutton
Menubutton的特色當(dāng)然是設(shè)置菜單,所以想用Menubutton,前提是有一個(gè)菜單。而在設(shè)置菜單過(guò)程中,可通過(guò)direction屬性,來(lái)設(shè)置菜單位置。如果不設(shè)置direction,菜單會(huì)出現(xiàn)在按鈕的下方,下面將direction設(shè)置為另外三個(gè)方向
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相比是多了一個(gè)可供勾選的功能,與此同時(shí)也就具備了選中和未選中兩種狀態(tài)。這兩種狀態(tài)默認(rèn)是1和0,但在Checkbutton中,可通過(guò)offvalue和onvalue來(lái)設(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可以看成是無(wú)法同時(shí)選中的多個(gè)Checkbutton,所以也通過(guò)variable來(lái)作為關(guān)聯(lián)變量,作為當(dāng)前被選中的值。但由于有多個(gè)值,所以也就沒(méi)有類(lèi)似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中四個(gè)常用按鈕的用法總結(jié)的文章就介紹到這了,更多相關(guān)Python tkinter按鈕內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pycharm創(chuàng)建scrapy項(xiàng)目教程及遇到的坑解析
這篇文章主要介紹了pycharm創(chuàng)建scrapy項(xiàng)目教程及遇到的坑解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Python學(xué)習(xí)筆記基本數(shù)據(jù)結(jié)構(gòu)之序列類(lèi)型list tuple range用法分析
這篇文章主要介紹了Python學(xué)習(xí)筆記基本數(shù)據(jù)結(jié)構(gòu)之序列類(lèi)型list tuple range用法,結(jié)合具體實(shí)例形式分析了Python序列類(lèi)型list tuple range基本概念、定義與使用技巧,需要的朋友可以參考下2019-06-06Python中max函數(shù)用于二維列表的實(shí)例
下面小編就為大家分享一篇Python中max函數(shù)用于二維列表的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04Python進(jìn)制轉(zhuǎn)換與反匯編實(shí)現(xiàn)流程介紹
這篇文章主要介紹了Python進(jìn)制轉(zhuǎn)換與反匯編的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-10-10django 實(shí)現(xiàn)簡(jiǎn)單的插入視頻
這篇文章主要介紹了django 實(shí)現(xiàn)簡(jiǎn)單的插入視頻,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04

From CSV to SQLite3 by python 導(dǎo)入csv到sqlite實(shí)例