os.system("python tkWindow.py") 在python文件中运行另一个外部python脚本文件。
import tkinter as tkimport oswin = tk.Tk()win.geometry('400x300+600+400')win.title('在.py中运行其他.py脚本文件')def btnRun_click():os.system("python tkWindow.py") # 运行另一个python脚本文件# 运行按钮btnRun = tk.Button(win)btnRun["text"] = "运行tkWindow.py"btnRun["width"] = 30btnRun["height"] = 3btnRun["command"] = btnRun_clickbtnRun.place(x=10,y=10)win.mainloop()
整个流程是可行的,而且在主进程中的按钮按下后持续处于按下状态,被执行的脚本的窗体处于类似模态窗体的状态。等被执行进程关闭后,源进程的窗体按钮恢复原样。
基于PythonGUI的类多窗体应用思路
其实,基于这种实现,已经可以制作类似于多窗体的应用,当然窗体之间是无法通信和传递数据的。
扩展思考
os.system其实执行的是CMD的命令,所以像start之类的命令应该也可以支持,而利用start可以实现网站、文件夹以及文件的打开。
实际测试
确实可以执行CMD的start命令,用来打开文件】文件夹和网站
import tkinter as tkimport oswin = tk.Tk()win.geometry('400x300+600+400')win.title('在.py中运行CMD的start命令')def btnRun_click():os.system("start https://www.baidu.com/") # 用系统浏览器打开网址# 运行按钮btnRun = tk.Button(win)btnRun["text"] = "打开百度"btnRun["width"] = 30btnRun["height"] = 3btnRun["command"] = btnRun_clickbtnRun.place(x=10,y=10)win.mainloop()
以下是打开文件夹和文件
os.system("start G:\【Python刻意练习100】\\001\\") # 打开本地文件夹os.system("start G:\【Python刻意练习100】\\001\\001.可视化窗体辅助代码生成.mp4") # 打开本地文件夹
其中注意,文件夹必须以反斜杠结尾,并且除磁盘盘符之后紧跟的那个反斜杠不需要转义外,其他路径中的反斜杠都要再加一个反斜杠进行转义。
system的另一种引入方式

