迭代tkinter组件
我有用Python Megawidgets和tkinter创建笔记本的代码。我相信这两个重复代码块可以被迭代,而不是我使用的为每个小部件创建一行代码的方法 具体来说,在代码中,如何循环遍历每个页面属性并配置每个选项卡的颜色和字体 代码迭代tkinter组件,tkinter,Tkinter,我有用Python Megawidgets和tkinter创建笔记本的代码。我相信这两个重复代码块可以被迭代,而不是我使用的为每个小部件创建一行代码的方法 具体来说,在代码中,如何循环遍历每个页面属性并配置每个选项卡的颜色和字体 代码 lass TextBookGUI: 类构造函数 填充每个笔记本页 definit(自身、主控): 有问题的区块是: *self.nb._pageAttrs['Welcome']['tabreqwidth'] = 200 self.nb._pageAttrs["W
lass TextBookGUI:
类构造函数
填充每个笔记本页
definit(自身、主控):
有问题的区块是:
*self.nb._pageAttrs['Welcome']['tabreqwidth'] = 200
self.nb._pageAttrs["Welcome"]['tabreqheight'] = 100
self.nb._pageAttrs["Students"]['tabreqwidth'] = 200
self.nb._pageAttrs["Students"]['tabreqheight'] = 100
self.nb._pageAttrs["Books"]['tabreqwidth'] = 200
self.nb._pageAttrs["Books"]['tabreqheight'] = 100
我试图使用iterkeys,但它产生了一个错误,即iterkeys不是这个特定词典的函数
另一块是:
#format the house style of tabs: yellow bg and blue text
self.nb.component('Welcome-tab').configure(font= ('Helviticva',20 ,'bold italic'),
fg= "yellow",bg="blue",wraplength=150)
self.nb.component('Students-tab').configure(font= ('Helviticva',20 ,'bold italic'),
fg= "yellow",bg="blue",wraplength=150)
self.nb.component('Books-tab').configure(font= ('Helviticva',20 ,'bold italic'),
fg= "yellow",bg="blue",wraplength=150)
self.nb.component('Loans-tab').configure(font= ('Helviticva',20 ,'bold italic'),
fg= "yellow",bg="blue",wraplength=150)
self.nb.component('Help-tab').configure(font= ('Helviticva',20,'bold italic'),
fg= "yellow",bg="blue",wraplength=150)
当然可以循环使用哪一个来减少重复代码?我建议使用字典来跟踪选项卡,而不是单个元素属性。然后可以在循环中创建选项卡:
self.tabs = {}
for tabname in (...):
self.tabs[tabname] = self.nb.add(tabname)
这样,您现在可以非常轻松地迭代所有选项卡:
for tabname in self.tabs.keys():
self.nb._pageAttrs[tabname]['tabreqwidth'] = 200
...
self.nb.component(tabname+"-tab').configure(...)
for tabname in self.tabs.keys():
self.nb._pageAttrs[tabname]['tabreqwidth'] = 200
...
self.nb.component(tabname+"-tab').configure(...)