我遇到了一个似乎是动态内存分配的问题。 (这有点难以解释,所以请耐心等待。)
使用tkinter,PythonWin和Python 2.6。 我编写了一个程序,用户可以在其中添加多行和多列Option Menu小部件,每个菜单都有数百个选项。一旦他们创建了他们想要的所有行和列,他们就可以将所有选择保存到文件中。重新打开工具时,可以选择读入数据文件以重新创建先前选择的所有选项菜单选项。当重新创建选项菜单选项的这些行和列时,该工具非常有效,除非行数非常大(例如超过200行 - 尽管200没有任何神奇之处)。 当重建过程将另一个选项菜单“附加”到不断增长的选项菜单列表时,该工具会崩溃。
以下是我如何将“选项菜单”窗口小部件添加到列表中的示例:
self.omPlaces = []
for i in range(len(numberOfRows)):
self.omPlaces.append(OptionMenu(self.frame, self.placesVar[i], *self.placesList, command = lambda widgObj=self.omPlaces,quad=(i*4)+2, arg3=True, arg4=True:self._displayProperWidget(widgObj,quad,arg3,arg4)))
self.omPlaces[i].config(width=120, font=('Arial', 9), activebackground='ghost white', disabledforeground="gray80", indicatoron=0, compound='right', image=self.arrow)
self.omPlaces[i].grid(row=nextRow, padx=2, column=3)
我的问题:有没有办法为一个可以增长很大的程序处理内存,比如高达1GB? (不是文件输出,而是自扩展GUI本身。)我不相信预构建这些列表可以完成,因为有唯一的参数要传递给'command = lambda'等...