我正在编写一个使用Tkinter作为用户界面的PYTHON程序。我必须分隔python文件:interface.py和script.py。Py包含一段代码,该代码使用matLab.Engine模块调用一个matlab脚本。当我按下某个按钮时,即在我按下我的程序中的某个按钮后,它会运行在script.py中指定的matlab脚本。然而,当我运行interface.py时,即使我只是导入了script.py而没有实际调用它的函数,它仍然在程序启动时启动matLab.Engine,因为我知道当我导入它时,它会编译并干扰script.py。我需要的是在我希望调用的时候而不是在程序启动期间调用在script.py中的函数中编写的matLab.Engine。
下面是script.py:
import matlab.engine
def implement():
eng = matlab.engine.start_matlab()
eng.matlab_script(nargout=0)
eng.quit()
以下是包含该函数和按钮的interface.py片段:
def analyze():
import script
script.implement()
analyzeButton = Button(self, text = "Analyze ->", bg='#0D0628', width=10, height=2, command = analyze())
1条答案
按热度按时间k3bvogb11#
当您执行此行代码时:
您实际上正在运行
analyze
函数,该函数将启动matlab引擎并运行您的matlab脚本。在Python中,
analyze
是对函数的引用,analyze()
调用该函数。您希望设置command=analyze
,而不是command=analyze()
。前者将把函数引用传递给按钮构造函数,后者将运行函数并将函数的返回值传递给按钮构造函数。