繁体   English   中英

如何将 arguments 传递给我 Tkinter 中的 python 脚本

[英]How can I pass arguments to my python script in Tkinter

我想创建按钮来为用户运行我的 python 脚本。 脚本从用户那里获取很少的 arguments。 如何将这些 arguments 传递给脚本?

import os
from tkinter import *

window=Tk()

window.title("Configure clients")
window.geometry('550x200')

def run():
    os.system('python create_client.py')

btn = Button(window, text="Click Me", bg="black", fg="white",command=run)
btn.grid(column=0, row=0)

window.mainloop()```
                 

而不是os.system ,你应该使用subprocess.Popen

因为os.system等待命令完成,它会使您的启动器 GUI 无响应。

当您使用subprocess.Popen时,它会启动一个新进程,但不会等待它结束。

Popen构造函数的第一个参数应该是 arguments 的序列,例如:

args = ["python", "create_client.py", "arg1", "arg2"]

您可以从Entry小部件中获取 arguments。

我建议按如下方式调用Popen

import subprocess as sp

p = sp.Popen(
    ["python", "create_client.py", "arg1", "arg2"], 
    stdout=sp.PIPE, stderr=sp.PIPE, text=True
)

Popen实例保存在列表中,因为您以后可能想用它做一些事情。 例如,您可能想要检查流程的最终返回值。 如果进程因错误而退出,您可能希望向用户显示标准 output 和/或标准错误。 这也是将sp.PIPE提供给stdoutstderr的原因; 它保存了程序的output。

阅读subprocess文档。 它包含更多信息,然后可以在答案中给出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM