這篇文章主要講解了“Tkinter邊框控件Frame怎么用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Tkinter邊框控件Frame怎么用”吧!
創(chuàng)新互聯(lián)主營洮南網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,App定制開發(fā),洮南h5微信平臺小程序開發(fā)搭建,洮南網(wǎng)站營銷推廣歡迎洮南等地區(qū)企業(yè)咨詢
在眾多的控件中,邊框控件Frame可以說是一個比較特別的一個。之所以這么說是因?yàn)镕rame控件本身并不會被顯示,功能只是為了將其他控件組織為一個整體以便進(jìn)行布局管理。
上面的視頻是之前說明Text控件時使用的。當(dāng)時使用的是grid布局,為了保證擺放足夠數(shù)量的按鈕,將Text控件的columnspan設(shè)置為8:
# create text widget.text = Text(root, undo=True, background="#a0ffa0", foreground="#000000", height = 10)text.grid(row=2 , column=0, columnspan=8)
但是這樣做有一個不好的地方,就是Text控件的布局會受到按鈕數(shù)量的影響,這不太好。本文使用Frame控件來解決這個問題。
首先構(gòu)建包含第一行按鈕的Frame控件:
edit_frame = Frame(root)
# change state function.
def change_state():
state = text.cget('state')
if state=='disabled':
text.config(state='normal')
text.config(background='#a0ffa0')
else:
text.config(state='disabled')
text.config(background='#efefef')
# change state button.
eb = Button(edit_frame,text="Enable", width=8, command=change_state)
eb.grid(row=0, column=0, sticky=E+W)
# delete selection.
def delete_selection():
try:
sel_from = text.index(SEL_FIRST)
sel_to = text.index(SEL_LAST)
# delete the selection.
text.delete(sel_from, sel_to)
except TclError:
pass
# delete selection button.
db = Button(edit_frame,text="Delete", width = 8, command=delete_selection)
db.grid(row=0, column=1, sticky=E+W)
# undo button
undo = Button(edit_frame, text='Undo', width = 8, command=lambda:text.edit_undo())
undo.grid(row=0, column = 2, sticky=E+W)
#redo button
redo = Button(edit_frame, text='Redo', width = 8, command=lambda:text.edit_redo())
redo.grid(row=0, column = 3, sticky=E+W)
edit_frame.grid(row=0, column=0, sticky=W)
代碼比較長,但是大部分內(nèi)容都和Text控件一文中的內(nèi)容相同,不同的只有兩點(diǎn):
這點(diǎn)代碼的首尾分別增加了構(gòu)建edit_frame控件和使用grid方法對該控件進(jìn)行布局的代碼。
所有按鈕的父控件都從root改為edit_frame。
接下來的格式按鈕也以同樣的方式處理:
format_frame = Frame(root)
# create fonts
fonts = [
Font(family='SimHei', size=20, weight=BOLD),
Font(family='SimHei', size=16),
Font(family='SimSun', size=12, weight=BOLD),
Font(family='SimSun', size=12)
]
# delete selection.
def format(index):
tag_name = 'Format' + str(index)
try:
sel_from = text.index(SEL_FIRST)
sel_to = text.index(SEL_LAST)
for name in text.tag_names():
text.tag_remove(name, sel_from, sel_to)
text.tag_add(tag_name, sel_from, sel_to)
# set format at first time.
range_count = len(text.tag_ranges(tag_name))
if range_count == 2:
text.tag_config(tag_name, font=fonts[index])
except TclError:
pass
# delete selection button.
for i in range(0, 4):
fb = Button(format_frame,
text="Format" + str(i),
width = 8,
command=lambda v=i : format(v))
fb.grid(row=1, column=i, sticky=E+W)
format_frame.grid(row=1, column=0, sticky=W)
使用Frame控件之后,在進(jìn)行root窗口布局時,四個編輯按鈕和四個格式按鈕分別作為兩個整體參加,因此生成Text控件時就不再需要考慮按鈕的個數(shù)了:
# create text widget.text = Text(root, undo=True, background="#a0ffa0", foreground="#000000", height = 10)text.grid(row=2 , column=0)
感謝各位的閱讀,以上就是“Tkinter邊框控件Frame怎么用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Tkinter邊框控件Frame怎么用這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!