<p>例如,您可以使用简单的结构来保存vidget,下面是我的一个旧函数中的一个示例:)</p>
<p>就像这里,<code>self.creation_panel</code>是一个dict</p>
<pre><code>def creation_view(self, core_line, skills_line):
#### Navigate functions for main menu ####
def set_navigate(self, arg):
self.navigate = arg
#### Configurations for create interference ####
self.configure_grid_x(20)
self.configure_grid_y(5)
row = 0
col = 0
#### Create body of view ####
for txt in core_line:
if col == 12:
col = 0
row += 1
self.creation_panel[txt] = Button(self.frame, text=txt, command=lambda cls=self, arg=txt: set_navigate(cls, arg))
self.creation_panel[txt].grid(row=row, column=col, columnspan=3, sticky=NSEW)
col += 3
for txt in skills_line:
if col == 12:
col = 0
row += 1
self.creation_panel[txt] = Button(self.frame, text=txt, state=DISABLED, command=lambda cls=self, arg=txt: set_navigate(cls, arg))
self.creation_panel[txt].grid(row=row, column=col, columnspan=4, sticky=NSEW)
col += 4
self.creation_panel["Preview"] = Button(self.frame, text="Preview", command=lambda cls=self: set_navigate(cls, "Preview"))
self.creation_panel["Preview"].grid(row=row+1, column=0, columnspan=12, sticky=NSEW)
self.preview_window1 = Label(self.frame, text="", justify=LEFT)
self.preview_window1.grid(row=0, rowspan=5, column=12, columnspan=4, sticky=NSEW)
self.preview_window1.config(state='disabled', relief=SUNKEN)
self.preview_window2 = Label(self.frame, text="", justify=LEFT)
self.preview_window2.grid(row=0, rowspan=5, column=16, columnspan=4, sticky=NSEW)
self.preview_window2.config(state='disabled', relief=SUNKEN)
self.frame.pack(side=LEFT, fill=BOTH, expand=1)
</code></pre>
<p>也许这不是最好的办法,其他人会纠正我的。但有一种可能的方法。在</p>
<p><code>self.navigate</code>变量用于导航,因为类只表示GUI的MVC模型中的视图:)。如果它发生了变化,那么从控制器发出信号,得到新的模型并称为新视图。或者类似的,我不记得那个老项目了。在</p>