我有一个程序,其中涉及tkinter
中的几个类作为框架。我有一个使用pygame
的独立文件,是一个国际象棋游戏。我希望能够加载该文件并在我按下其中一个框架中的某个tkinter
按钮并关闭该文件时执行它。我知道在tkinter文件开头导入模块会立即运行它,这不是我所需要的。我只希望它在按下按钮时运行。
我尝试使用其他不起作用的模块。我尝试使用也无法使用的功能。
我希望在按下按钮时能够运行国际象棋文件,而不是在运行该等待文件时立即运行。 但是,运行时国际象棋文件会立即执行,而另一个文件甚至都不会运行。
答案 0 :(得分:0)
如果要在本机编辑器中打开文件,就像在Windows上双击一样,
您可以致电os.startfile(file)
。运行文件。
示例:
os.startfile('C:\\Windows\\System32\\notepad.exe')
这将运行记事本。
答案 1 :(得分:0)
虽然我不建议这样做,但您可以创建一个在按下按钮后导入模块的函数,如下所示:
Button(command=my_func)
def my_func():
import foo, bar
但是,如果您只是不想从外部文件运行函数,请将以下代码放入文件中:
if __name__ == "__main__:
<Code that gets run>
然后简单地调用你想调用的函数:
import bar
bar.foo()
请注意,importlib 是导入外部文件的更好选择。
答案 2 :(得分:-1)
如果将主要的Python代码包含在if __name__ == "__main__":
中,则只有在执行文件而不将其作为模块加载时,它才会运行。这是一种常见的做法。
如果您这样设置spam.py
:
def main():
do_things_here
if __name__ == "__main__":
main()
您一开始就可以import spam
,什么也没有发生,而在执行时spam.main()
就可以执行。
但是如果您真的想要动态加载模块,exec("import " + module_name)