我正试图用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:全局变量'gui‘没有定义$,这也是Python2.7.5中的。感谢任何回答的人,并对代码块中的任何错误表示歉意;我是新来的。
发布于 2013-08-01 18:01:22
问题是您没有正确地构造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。
我不确定我是否解决了你的问题,但这应该是个开始。
https://stackoverflow.com/questions/17862559
复制相似问题