Я пытался собрать консольное приложение, используя tkinter. Но после ввода первой команды она только выполняется. Но тогда ничего не происходит.
Здесь я добавил цикл , в то время как , чтобы процесс выполнения продолжался, но все еще имел ту же проблему. Я сделал ошибку?
import sys
import tkinter as tk
from tkinter import *
from tkinter import font
from tkinter.font import *
import subprocess
import threading
from threading import Thread``
consl = Tk()
consl.geometry("1200x380")
consl.resizable(1, 1)
consl.configure(background='black')
cmd_OP = Canvas(consl, width=1000, height=500, background="black")
cmd_OP_viewer = Text(cmd_OP, width=700, height=350, background="black", foreground="green")
cmd_OP.create_window((0,0), window=cmd_OP_viewer, anchor=NW)
ScBar = tk.Scrollbar(orient="vertical", command=cmd_OP_viewer.yview, background="grey")
cmd_OP_viewer.configure(yscrollcommand=ScBar.set)
cmd_OP_viewer.pack(side=TOP, expand=True, fill=X)``
#Font for all output & other operations.
helv9 = font.Font(family='Helvetica', size=9, weight=tkinter.font.BOLD)
#input of the console are being set.
l1 = Label(consl, text=os.getcwd(), background="black", foreground="white")
entry = Entry(consl, background="black", foreground="white")
entry.pack(side=BOTTOM, anchor=SW, expand=TRUE, fill=X)
entry.insert(0, '')
entry.delete(0, END)
entry.pack()
l1.pack(side=BOTTOM, anchor=SW, expand=TRUE)
cmdOP = subprocess.check_call(entry.get(), shell=True)
entry.bind("<Return>", (lambda event: (get_entry())))
cmd_OP.pack( )
def run_win_cmd():
result = []
try:
process = subprocess.Popen(entry.get(),
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE, universal_newlines=False)
except:
process = os.system(entry.get())
for line in process.communicate():
result.append(line)
errcode = process.returncode
for line in result:
data = "".join(map(bytes.decode, result))
return data
if errcode is not None:
raise Exception('cmd %s failed, see above for details for :: \n', entry.get(), process)
def get_entry():
while TRUE:
if entry.get() != "exit":
cmd_OP_viewer.insert(END, str(run_win_cmd()))
cmd_OP_viewer.config(state=DISABLED)
entry.delete(0, END)
break
else:
os.system(exit())
if __name__ == '__main__':
consl.mainloop()```