【发布时间】:2021-09-23 00:23:15
【问题描述】:
当我按下开始按钮时,它会运行另一个脚本,但只在另一个终端中显示它,而不是在我拥有的 GUI 滚动文本框中。我的问题有简单的解决方法吗?在任何地方都找不到答案。
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
import sys
import os
import tkinter.scrolledtext as tkst
root = Tk()
root.title("WLP")
root.geometry("950x450")
root.iconbitmap("Vo1d.ico")
root.configure(bg='#0c0c0c')
def clickstart():
os.system('python WLP.py')
Button1 = Button(root, text="START", bg="#0c0c0c", fg="#C0C0C0", command=clickstart) #)
Textbox = tkst.ScrolledText(root, width=75, height=10, bg="#0c0c0c", fg="#C0C0C0")
Button1.grid(row=10, column=5, pady=15)
Textbox.grid(row=17, column=5)
root.mainloop()
【问题讨论】:
-
你想做什么?
-
当我按下 button1 时,我试图让“wlp.py”的结果显示在我的滚动文本(文本框)中。我现在得到的只是当我按下按钮 1 时在我的 GUI 后面的终端中显示的“wlp.py”的结果。 @PCM
-
os.system()不允许您访问正在运行的命令的输出。您可能需要来自subprocess模块的东西 -.run()。 -
@DwughtFromTheOffice,这在运行 .py 文件时稍作修正。但是,在编译脚本并按下 .exe 文件中的按钮后,它根本不会在滚动文本(文本框)中显示结果。您或任何人能想到的任何想法或解决方法?在 .exe 文件后面的终端中,它声明: subprocess.CalledProcessError: Command '['python', 'wlp1.py']' returned non-zero exit status 2.
-
@Vo1d 是因为
check=True在subprocess.run(...)中使用了答案。如果WPL.py的返回码不为零,则会引发异常。删除check=True。