“execfile”无法正常工作

时间:2013-07-25 15:36:38

标签: python tkinter execfile

我正在尝试使用Tkinter为我的Python程序创建一个启动程序。我使用了execfile函数,幸运的是它打开了目标GUI。但是,没有任何按钮可以工作,并且它会说全局变量大多数函数引用都没有定义。

启动该程序的代码:

def launch():
    execfile("gui.py")

有效。目标程序的基本代码:

from Tkinter import *
gui = Tk()
gui.title("This is a GUI")

编辑: 按钮示例:

def buttonWin():
    buttonWindow = Toplevel(gui)
    button = Button(buttonWindow, text = "Button", width = 10, command = None)
    button.pack()

当它为Toplevel引用'gui'变量时,会出现错误。我尝试在Launcher脚本中定义'gui'变量,但这只会导致目标脚本首先打开,而不是Launcher:

gui = Tk()
launcher = Tk()
launcher.title("Launcher")
def launch():
    return execfile("gui.py")
launchButton = Button(launcher, text = "Launch", width = 10, command = launch)

当我尝试按下这个程序的一个按钮时,我得到一个NameError: $ NameError:全局变量'gui'未定义$ 这也是在Python 2.7.5中。 谢谢任何回答的人,对于代码块的任何错误感到抱歉;我是新人。

1 个答案:

答案 0 :(得分:1)

问题在于您错误地构造了Tkinter程序。

在“gui.py”中你应该有类似的东西:

from Tkinter import *

gui= Tk()
gui.mainloop()

您可以添加按钮来执行功能并对其进行自定义:

from Tkinter import *

gui = Tk()
gui.title("This is a GUI")    

def launch():
    execfile("gui.py")

launchbutton = Button(gui, text='Launch Program', command=launch)
launchbutton.pack()

gui.mainloop()

我认为你的函数buttonWin试图做一个通常由类处理的东西;请参阅unutbu的回答here

我不确定我是否解决了你的问题,但这应该是一个开始。