迭代tkinter组件

迭代tkinter组件,tkinter,Tkinter,我有用Python Megawidgets和tkinter创建笔记本的代码。我相信这两个重复代码块可以被迭代,而不是我使用的为每个小部件创建一行代码的方法 具体来说,在代码中,如何循环遍历每个页面属性并配置每个选项卡的颜色和字体 代码 lass TextBookGUI: 类构造函数 填充每个笔记本页 definit(自身、主控): 有问题的区块是: *self.nb._pageAttrs['Welcome']['tabreqwidth'] = 200 self.nb._pageAttrs["W

我有用Python Megawidgets和tkinter创建笔记本的代码。我相信这两个重复代码块可以被迭代,而不是我使用的为每个小部件创建一行代码的方法

具体来说,在代码中,如何循环遍历每个页面属性并配置每个选项卡的颜色和字体

代码

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(...)