按下tkitner按钮时导入模块

时间:2019-05-31 12:13:44

标签: python tkinter pygame chess

我有一个程序,其中涉及tkinter中的几个类作为框架。我有一个使用pygame的独立文件,是一个国际象棋游戏。我希望能够加载该文件并在我按下其中一个框架中的某个tkinter按钮并关闭该文件时执行它。我知道在tkinter文件开头导入模块会立即运行它,这不是我所需要的。我只希望它在按下按钮时运行。

我尝试使用其他不起作用的模块。我尝试使用也无法使用的功能。

我希望在按下按钮时能够运行国际象棋文件,而不是在运行该等待文件时立即运行。 但是,运行时国际象棋文件会立即执行,而另一个文件甚至都不会运行。

3 个答案:

答案 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)