2

我正在尝试使用 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' 变量时,会出现错误。我尝试在启动器脚本中定义“gui”变量,但这只会导致目标脚本首先打开,而不是启动器:

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

当我尝试按下该程序的一个按钮时,我得到一个 NameError: $NameError: Global variable 'gui' is not defined$ 这也是在 Python 2.7.5 中。感谢任何回答的人,对于代码块的任何错误,我们深表歉意;我是新来的。

4

1 回答 1

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 的答案。

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

于 2013-08-01T18:01:22.987 回答