欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?tkinter控件樣式詳解

 更新時(shí)間:2023年09月05日 14:05:44   作者:微小冷  
tkinter對(duì)控件的諸多屬性提供了可定制的功能,下面以最常用的按鈕作為示例,集中展示其樣式特點(diǎn),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

以按鈕為例

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前景顏色
relief3D樣式
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)文章

最新評(píng)論