使用 os 模块输入 cmd 命令后 Tkinter 没有响应
Tkinter Not responding after entering cmd command with os module
我有一个 运行 功能的按钮。这个函数应该 运行 2 cmd 命令,第一个 cmd 命令工作正常,但 tkinter GUI 在第二个命令可以执行之前冻结。有办法解决这个问题吗?
使用 pycharm 和 python 3.9
def runspotdl():
os.system(f'cmd /k "my command here"')
os.system(f'cmd /k "my second command here"')
使用 /k
cmd 执行然后保持打开状态。
用/c
cmd 执行并关闭。
因此,您的第一个 cmd window 在执行时执行,然后等到您关闭它,就在您关闭它时,您的第二个 cmd 命令将在新的 cmd window 中执行。
此外,一直以来,您的 Tkinter window 将冻结,因为它的程序对于 cmd windows 仍然是 运行。它会在您退出第二个 cmd window.
时解冻
所以,我的建议是,如果您没有使用第一个命令在 cmd window 中显示任何内容,那么对第一个命令使用 /c
,对第二个命令使用 /k
(让它保持打开状态直到你想退出。或者只是在每个命令中添加 /c
在它们执行后关闭 cmd windows 。)
例如
def runspotdl():
os.system(f'cmd /c "1st cmd command"')
os.system(f'cmd /k "2nd cmd command"')
我有一个 运行 功能的按钮。这个函数应该 运行 2 cmd 命令,第一个 cmd 命令工作正常,但 tkinter GUI 在第二个命令可以执行之前冻结。有办法解决这个问题吗?
使用 pycharm 和 python 3.9
def runspotdl():
os.system(f'cmd /k "my command here"')
os.system(f'cmd /k "my second command here"')
使用 /k
cmd 执行然后保持打开状态。
用/c
cmd 执行并关闭。
因此,您的第一个 cmd window 在执行时执行,然后等到您关闭它,就在您关闭它时,您的第二个 cmd 命令将在新的 cmd window 中执行。 此外,一直以来,您的 Tkinter window 将冻结,因为它的程序对于 cmd windows 仍然是 运行。它会在您退出第二个 cmd window.
时解冻所以,我的建议是,如果您没有使用第一个命令在 cmd window 中显示任何内容,那么对第一个命令使用 /c
,对第二个命令使用 /k
(让它保持打开状态直到你想退出。或者只是在每个命令中添加 /c
在它们执行后关闭 cmd windows 。)
例如
def runspotdl():
os.system(f'cmd /c "1st cmd command"')
os.system(f'cmd /k "2nd cmd command"')