Skip to main content
 首页 » 编程设计

python之"execfile"不能正常工作

2025年05月04日11langtianya

我正在尝试使用 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 中。 谢谢任何回答的人,对于代码块的任何错误,我们深表歉意;我是新来的。

请您参考如下方法:

问题是您错误地构建了 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 .

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