Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用tkinter按钮运行python脚本?_Python_Tkinter_Button_Main - Fatal编程技术网

如何使用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>中,以确定运行时的完整路径。将允许您避免将路径硬编码到代码中。