Python?tkinter控件樣式詳解
以按鈕為例
tkinter對(duì)控件的諸多屬性提供了可定制的功能,下面以最常用的按鈕作為示例,集中展示其樣式特點(diǎn),而后再詳細(xì)給出每種樣式所支持的部件類型。
這里面并不涉及到諸如寬度width,高度height,以及調(diào)控與其他部件最小間隔的padx, pady,而只專注于能夠體現(xiàn)“樣式”的屬性。
其繪制代碼如下,整體采用pack布局,每一組風(fēng)格均放在一個(gè)Frame中,每個(gè)Frame都有一個(gè)Label和圖像一一對(duì)應(yīng),然后所有Frame縱向排布下去。
import tkinter as tk import tkinter.ttk as ttk root = tk.Tk() # 用于設(shè)置frame def setFrame(root, text): frm = tk.LabelFrame(root) frm.pack(side=tk.TOP, fill=tk.X, expand=tk.YES) ttk.Label(frm, text=text, width=10).pack(side=tk.LEFT) return frm pack = dict(side=tk.LEFT, padx=5) frm = setFrame(root, "按鈕狀態(tài)") status = {"禁用狀態(tài)":tk.DISABLED, "普通狀態(tài)":tk.NORMAL, "活躍狀態(tài)":tk.ACTIVE} for i, key in enumerate(status, 2): tk.Button(frm, text=key, state=status[key]).pack(**pack) frm = setFrame(root, '按鈕顏色') tk.Button(frm, text='背景色', bg='blue').pack(**pack) tk.Button(frm, text='前景色', fg='blue').pack(**pack) tk.Button(frm, text='鼠標(biāo)點(diǎn)擊改變背景', activebackground='blue').pack(**pack) tk.Button(frm, text='鼠標(biāo)點(diǎn)擊改變前景', activeforeground='blue').pack(**pack) frm = setFrame(root, '邊框尺寸') for i in [1,3,5,7,9]: tk.Button(frm, text=f'邊寬{i}', bd=i).pack(**pack) frm = setFrame(root, '按鈕字體') fontDct = {'軟體雅黑/12/重打印': ('軟體雅黑', 10, 'overstrike'), '宋體/12/斜體' : ('宋體', 10, 'italic'), '黑體/12/加粗' : ('黑體', 10, 'bold'), '楷體/12/下劃線' : ('楷體', 10, 'underline')} for key in fontDct: tk.Button(frm, text=key, font=fontDct[key]).pack(**pack) frm = setFrame(root, '文字對(duì)齊') justDct = {'左對(duì)齊\n文字左側(cè)對(duì)齊' : tk.LEFT, '居中對(duì)齊\n文字居中對(duì)齊': tk.CENTER, '右對(duì)齊\n文字右側(cè)對(duì)齊' : tk.RIGHT} for key in justDct: tk.Button(frm, text=key, justify=justDct[key]).pack(**pack) frm = setFrame(root, '邊框樣式') reliefs = {'邊框平坦' : tk.FLAT, '邊框凹陷' : tk.SUNKEN, '邊框凸起' : tk.RAISED, '邊框壓線' : tk.GROOVE, '邊框脊線' : tk.RIDGE} for key in reliefs: tk.Button(frm, text=key, relief=reliefs[key]).pack(**pack) frm = setFrame(root, '文字樣式') tk.Button(frm, text='文字換行顯示', wraplength=30).pack(**pack) tk.Button(frm, text='文字下劃線', underline=2).pack(**pack) tk.Button(frm, text='橫向間距25', padx=25).pack(**pack) tk.Button(frm, text='縱向間距10', pady=10).pack(**pack) root.mainloop()
共有參數(shù)
下表給出了tkinter控件中常用的三種部件Label, Button, Entry所共有的的屬性參數(shù)
屬性 | 說明 |
---|---|
height | 高度 |
wideth | 寬度 |
bd | 邊框?qū)挾?/td> |
bg | 背景顏色 |
fg | 前景顏色 |
relief | 3D樣式 |
font | 文字字體 |
justify | 文字對(duì)齊方式 |
其中,relief可以選擇tk.FLAT、tk.SUNKEN、tk.RAISED、tk.GROOVE、tk.RIDGE,每種3D樣式可見上圖。
justify可選tk.LEFT, tk.CENTER, tk.RIGHT,對(duì)應(yīng)左中右。
font是一個(gè)元組,包括字體、字號(hào)以及字體樣式三個(gè)內(nèi)容,字體樣式可以選擇bold, italic, underline, overstrike這四種。
此外,由于Entry中的文字是動(dòng)態(tài)變化的,所以下面三個(gè)參數(shù)適用于Label和Button,但不適用于Entry
屬性 | 說明 |
---|---|
text | 文字 |
underline | 下劃線 |
wraplength | 文字行寬 |
另一方面,Button和Entry都屬于可操作控件,所以都有一個(gè)state參數(shù),用以描述控件是否可操作,可選狀態(tài)有tk.DISABLED、tk.NORMAL以及tk.ACTIVE。
動(dòng)態(tài)屬性
在一開始給出的Button參數(shù)圖中,有鼠標(biāo)點(diǎn)擊改變背景和鼠標(biāo)點(diǎn)擊改變前景這兩個(gè)按鈕,它們對(duì)應(yīng)的屬性本質(zhì)是一種封裝好的事件。Button有這種被點(diǎn)擊觸發(fā)的事件;Entry則有選中文字后觸發(fā)的事件,下面對(duì)這幾種屬性進(jìn)行演示。
代碼如下,注意用到了上面的setFrame函數(shù)。
root = tk.Tk() frm = setFrame(root, '按鈕顏色') tk.Button(frm, text='鼠標(biāo)點(diǎn)擊背景變紅', activebackground='red').pack(**pack) tk.Button(frm, text='鼠標(biāo)點(diǎn)擊文字變紅', activeforeground='red').pack(**pack) frm = setFrame(root, "Entry顏色") v1 = StringVar() v1.set('選中文字后底色為紅色') tk.Entry(frm, textvariable=v1, selectbackground='red').pack(**pack) v2 = StringVar() v2.set('選中文字后文字為紅色') tk.Entry(frm, textvariable=v2, selectforeground='red').pack(**pack) frm = setFrame(root, "Entry邊框") v3 = StringVar() v3.set('選中文字后選取邊框?qū)挾?) tk.Entry(frm, textvariable=v3, selectborderwidth=5).pack(**pack) v4 = StringVar() v4.set('聚焦后改變邊框尺寸') tk.Entry(frm, textvariable=v4, highlightthickness=5).pack(**pack) root.mainloop()
到此這篇關(guān)于Python tkinter控件樣式詳解的文章就介紹到這了,更多相關(guān)tkinter控件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python獲取beautifulphoto隨機(jī)某圖片代碼實(shí)例
python獲取beautifulphoto隨機(jī)某圖片代碼實(shí)例,大家參考使用吧2013-12-12python實(shí)現(xiàn)將讀入的多維list轉(zhuǎn)為一維list的方法
今天小編就為大家分享一篇python實(shí)現(xiàn)將讀入的多維list轉(zhuǎn)為一維list的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06python實(shí)現(xiàn)鍵盤控制鼠標(biāo)移動(dòng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)鍵盤控制鼠標(biāo)移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10jupyter安裝失敗的解決,問題出在rust環(huán)境和32位python
文章講述了如何解決在安裝Jupyter Notebook時(shí)遇到的問題,包括安裝Rust和選擇合適的Python版本(64位)來避免兼容性問題2025-02-02結(jié)合Python網(wǎng)絡(luò)爬蟲做一個(gè)今日新聞小程序
本篇文章介紹了我在開發(fā)過程中遇到的一個(gè)問題,以及解決該問題的過程及思路,通讀本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下2021-09-09python深copy和淺copy區(qū)別對(duì)比解析
這篇文章主要介紹了python深copy和淺copy區(qū)別對(duì)比解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12