如何使用tkinter按钮运行python脚本?
我有一个名为如何使用tkinter按钮运行python脚本?,python,tkinter,button,main,Python,Tkinter,Button,Main,我有一个名为main.py的python文件,如下所示: print('hello world') import sys import os from tkinter import * import main window=Tk() window.title("Running Python Script") window.geometry('550x200') def run(): os.system('main.py') btn = Button(wind
main.py
的python文件,如下所示:
print('hello world')
import sys
import os
from tkinter import *
import main
window=Tk()
window.title("Running Python Script")
window.geometry('550x200')
def run():
os.system('main.py')
btn = Button(window, text="Run your Code!", bg="blue", fg="white",command=run)
btn.grid(column=0, row=0)
window.mainloop()
我还有一个tkinkter_run.py
文件,看起来像这样:
print('hello world')
import sys
import os
from tkinter import *
import main
window=Tk()
window.title("Running Python Script")
window.geometry('550x200')
def run():
os.system('main.py')
btn = Button(window, text="Run your Code!", bg="blue", fg="white",command=run)
btn.grid(column=0, row=0)
window.mainloop()
当我运行我的tkinker\u run.py
文件时,我确实会看到一个窗口,其中有一个运行你的代码代码>按钮,但当我单击该按钮并在可视代码中查看我的终端时,我得到以下错误:
Hello World
'main.py' is not recognized as an internal or external command,
operable program or batch file.
看来在我点击运行你的代码之前,Hello World
就已经打印出来了代码>按钮。我不明白问题出在哪里……这是因为os.system只接受命令而不接受文件名
您可以替换此代码
os.system("main.py")
像这样
os.system("python main.py")
我的目录名包含空格,大多数shell通过假设参数之间用空格分隔来分割参数。因此,解决方案是将包含脚本文件名的部分放在双引号之间
os.system('python "c:\data\EK\Desktop\Python Microsoft Visual Studio\MM\main.py"')
这成功了 我发现:Hello World
python:无法打开文件'main.py':[Errno 2]没有这样的文件或目录
,所以在我点击运行代码之前,它似乎又被打印出来了代码>button@martineau你是什么意思?main.py
与tkinkter\u run.py
在同一目录中吗?@AST是的。@TangerCity同样,Hello World
最初是打印的,因为你调用了import main
。尝试使用os.system(os.path.abspath('main.py'))
,以确保提供了正确的路径。@AST当我单击该运行代码时,我得到了这个代码>按钮C:\data\EK\Desktop\Python不被识别为内部或外部命令、可操作程序或批处理文件。
在我之前的评论中,您提到它不起作用?无论如何,请考虑使用<代码>子进程。Popen < /代码>,如果您不希望它阻塞GUI的事件循环。如果两个代码> .Py <代码>文件在同一个目录中,您可以从<代码>文件名> <代码>中提取文件夹的名称,并将其添加到<代码> My.Py < /Cord>中,以确定运行时的完整路径。将允许您避免将路径硬编码到代码中。