Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用tkinter时的动态内存分配_Python_Tkinter - Fatal编程技术网

Python 使用tkinter时的动态内存分配

Python 使用tkinter时的动态内存分配,python,tkinter,Python,Tkinter,我有一个问题,似乎是一个动态分配内存。(这将有点难以解释,请耐心听我说。) 使用tkinter、PythonWin和Python2.6。 我编写了一个程序,用户可以在其中添加多行和多列选项菜单小部件,每个菜单都有数百个选项。一旦创建了所需的所有行和列,就可以将所有选择保存到文件中。重新打开该工具时,可以选择读入数据文件,以重新创建以前选择的所有选项菜单选项。当重新创建选项菜单选择的这些行和列时,该工具工作得非常好,除非行的数量非常大(比如超过200行——尽管200行没有什么神奇之处)。 当重建过

我有一个问题,似乎是一个动态分配内存。(这将有点难以解释,请耐心听我说。)

使用tkinter、PythonWin和Python2.6。 我编写了一个程序,用户可以在其中添加多行和多列选项菜单小部件,每个菜单都有数百个选项。一旦创建了所需的所有行和列,就可以将所有选择保存到文件中。重新打开该工具时,可以选择读入数据文件,以重新创建以前选择的所有选项菜单选项。当重新创建选项菜单选择的这些行和列时,该工具工作得非常好,除非行的数量非常大(比如超过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”等。

当程序崩溃时,是否会收到错误消息?错误消息是什么?此外,代码的格式不正确。请花点时间将格式设置正确,因为缩进对于准确理解代码正在执行的操作至关重要。崩溃之前发生的唯一一件事是出现一个小TK错误弹出窗口,其中没有任何消息。(只有一个红色的X和一个OK按钮。)点击OK,一切都会消失。至于缩进,我只是发布了一小段代码。正是在其中一个“附属物”期间,它崩溃了。我不认为追加是问题,因为这是内存被破坏的地方。顺便问一下,缩进有什么问题?Thanksit看起来像是别人为你修复了凹痕。最初,没有任何缩进。感谢您的回复。现在有没有关于如何在小部件创建期间处理动态内存分配的想法?我不太明白你在问什么。Python无法“处理动态内存分配”——它通过垃圾收集器为您完成所有这些。你的问题肯定不止这些,我已经成功地创建了数千个没有内存问题的小部件。我建议您创建一个最小的工作示例来创建所有这些小部件,这样我们就可以确切地看到您在做什么。例如,您正在使用线程吗?自置列表等有多大。