首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"execfile“不能正常工作

"execfile“不能正常工作
EN

Stack Overflow用户
提问于 2013-07-25 15:36:37
回答 1查看 1.5K关注 0票数 2

我正试图用Tkinter为我的Python程序制作一个发射器。我使用了execfile函数,幸运的是它打开了目标GUI。但是,所有的按钮都不能工作,它会说大多数函数引用的全局变量都没有定义。

启动程序的代码:

代码语言:javascript
复制
def launch():
    execfile("gui.py")

这是可行的。目标程序的基本代码:

代码语言:javascript
复制
from Tkinter import *
gui = Tk()
gui.title("This is a GUI")

编辑:按钮示例:

代码语言:javascript
复制
def buttonWin():
    buttonWindow = Toplevel(gui)
    button = Button(buttonWindow, text = "Button", width = 10, command = None)
    button.pack()

当它引用Toplevel的'gui‘变量时,会产生一个错误。我尝试在启动程序脚本中定义'gui‘变量,但这只会导致目标脚本首先打开,而不是启动程序:

代码语言:javascript
复制
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中的。感谢任何回答的人,并对代码块中的任何错误表示歉意;我是新来的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-01 18:01:22

问题是您没有正确地构造Tkinter程序。

在"gui.py“中,您应该有如下内容:

代码语言:javascript
复制
from Tkinter import *

gui= Tk()
gui.mainloop()

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

代码语言:javascript
复制
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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17862559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档