我正在尝试在 Python Tkinter 中使用 os.system 触发一个新窗口,但它不起作用

Posted

技术标签:

【中文标题】我正在尝试在 Python Tkinter 中使用 os.system 触发一个新窗口,但它不起作用【英文标题】:I am trying to trigger a new window using os.system in Python Tkinter but it's not working 【发布时间】:2022-01-13 07:20:16 【问题描述】:
def hmsbookings() :
    os.system('python hmsbookings.py')
    root.after(60000, hmsbookings)

我尝试了这两条线,但由于某些原因,它没有成功。 它显示错误:

/System/.../MacOS/Python: can't open file 'hmsbookings.py': [Errno 2] No such file or directory.

【问题讨论】:

hmsbookings.py 文件位于何处?是在提到的路径/System/.../MacOS/Python下吗? 不,它位于我的工作区文件夹中。不在 Python 文件夹中。 这是错误消息试图告诉您的内容。它在 python 文件夹中搜索。启动新脚本时使用绝对路径。 怎么做? 【参考方案1】:

执行路径可能与文件所在的位置不同。 在您的情况下,执行在 /System/.../MacOS/Python 但是您的文件在其他地方。如果您使用文件的完整路径,则可以解决此不当行为。

让我假设您的文件位于您的桌面中。那么这是使用绝对路径的修改代码。

import os
def hmsbookings() :
    os.system('python os.path.expanduser("~/Desktop/hmsbookings.py")')
    root.after(60000, hmsbookings)

我对macOS不熟悉,我基于this question。如果你需要更多关于mac上绝对路径的信息see this question。

【讨论】:

谢谢!顺便说一句,我试过这个方法def hmsbookings() : my_dir = os.path.dirname(sys.argv[0]) os.system('%s %s %s' % (sys.executable, os.path.join(my_dir, 'hmsbookings.py'), os.path.join(my_dir, 'Argument')))它对我有用。

以上是关于我正在尝试在 Python Tkinter 中使用 os.system 触发一个新窗口,但它不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 tkinter 中更改框架的大小,由一个类定义

Python:在使用多处理时更新 Tkinter

如何在 python 3.4 tkinter“索引错误:列表索引超出范围”中修复此错误

在 tkinter 中输入希腊字符

你如何使用tkinter按钮重启python程序?

MatplotLib (TKinter) + OpenCV 在 Python 3 中崩溃