【发布时间】:2013-04-02 17:18:51
【问题描述】:
我是 Python 新手,遇到了一个问题:Gui 类中的方法总是被执行两次。
这里是继承自Tkinter的gui类:
from Tkinter import *
class Gui (Tk):
def createKdWindow(self):
print("createKdWindow has been triggered")
def activate(self):
print ("activate has been triggered")
self.tk.mainloop()
这里是从 (init.py) 调用方法的地方:
from pm_test.gui import Gui
datgui = Gui()
datgui.createKdWindow()
datgui.activate()
当我运行我的程序时,我得到以下控制台输出:
createKdWindow has been triggered
activate has been triggered
createKdWindow has been triggered
activate has been triggered
所以我的方法被执行了两次。我不知道这是从哪里来的。有人知道怎么解决吗?
固定: 将 init.py 中的代码放入新模块可解决此问题!
【问题讨论】:
-
我曾经遇到过类似的奇怪事件,但发生在完全不相关的库上。 stackoverflow.com/questions/10898218/… - 代码被重写(或至少被大量重构),但我从未发现真正的问题是什么。我认为我运行的是 Python 2.6.6 - 你也是这种情况吗?
-
我尝试在 Python 2.7.3 上逐字运行该代码,但无法重现该问题。你用的是什么 Python 版本?
-
我无法在 python2.7.3 上重现这个(我把它全部放在一个文件中)。如果将所有内容放在一个文件中,问题会消失吗?
-
也许您的 pm_test 包包含一个包含一些冗余代码的
__init__.py脚本?或者也许 PYTHONPATH 正在选择不同版本的 pm_test.gui? -
您的
pm_test.gui文件是否包含类外的测试代码?如果是这样,这可能会在导入中执行。把它放在if __name__ == "__main__"中以避免这种情况。
标签: python class methods tkinter