【问题标题】:Show command prompt in tkinter window在 tkinter 窗口中显示命令提示符
【发布时间】:2021-04-16 11:45:28
【问题描述】:

如何制作一个可以运行一段代码的程序,然后显示结果?因此,如果我让我的程序运行python --version,它应该会打印出类似 Python 3.8.3 的内容(取决于您使用的版本),但您明白了

PS:我知道这已经发布过,但它们对我不起作用:(

谢谢!!

【问题讨论】:

  • GL 与那个。做你的目标需要大量的工作。我的建议是使用诸如this 之类的预先构建的东西
  • 你可以使用 os.system 可能
  • @above 谢谢,但我给了我一个错误:ModuleNotFoundError: No module named '_terminal'

标签: python tkinter command-prompt


【解决方案1】:

所以我在这里做了一个你可能想要的非常简单的版本(输入python --version 试试):

from tkinter import Tk, Text
import subprocess


def run(event):
    command = cmd.get('1.0', 'end').split('\n')[-2]
    if command == 'exit':
        exit()
    cmd.insert('end', f'\n{subprocess.getoutput(command)}')


root = Tk()

cmd = Text(root)
cmd.pack()

cmd.bind('<Return>', run)

root.mainloop()

subprocess.getoutput() 获取使用给定命令时 cmd 将给出的输出

编辑(在此处移动评论):
但是有一些限制,例如运行 pause 只会使 tkinter 崩溃,并且仅在命令完成运行后才会给出输出,例如,如果您 tracert google.com 可能需要一段时间,在此期间窗口将无响应,直到完成该过程然后把它全部放出来(也许可以使用线程至少不会使窗口无响应)

编辑(2021 年 7 月 28 日):
使用subprocess.Popen 并从那里流式传输数据可能会更好

【讨论】:

  • @helloworld14751 有一些限制,但是例如运行 pause 只会使 tkinter 崩溃,并且只有在命令完成运行后才会给出输出,例如如果你 tracert google.com 可能需要一段时间,在此期间窗口将无响应,直到它完成该过程然后将其全部输出(也许可以使用线程至少不使窗口无响应)