print(hello)
c = input("напишите число")
print(c)
но мой графический интерфейс может печатать только привет, а затем мне нужно снова нажать кнопку.
Но я хочу, чтобы графический интерфейс мог печатать каждый ввод или печатать из сценария так же, как это делает терминал в Python. Так что в реальной жизни мне нужно просто распечатать отпечатки и исходные данные, вот и все. Пожалуйста помогите, спасибо
Код: Выделить всё
import sys
import threading
from queue import Queue
from subprocess import Popen, PIPE
from tkinter import Tk, Button, Text
import tkinter as tk
process = None
queue = Queue()
root = tk.Tk()
root.title("Spustit Python Skript")
root.configure(bg='steelblue')
def run_server():
global process
if process:
process.terminate()
# Spuštění Python skriptu a přesměrování stdin
process = Popen([sys.executable, '-u', 'C:\\Python\\afaina-evobliss-software-68090c0edb16\\automatizace\\script_run.py', 'runserver'],
stdout=PIPE, stdin=PIPE, bufsize=1, text=True)
def run_server1():
global process
if process:
process.terminate()
# Spuštění Python skriptu a přesměrování stdin
process = Popen([sys.executable, '-u', 'C:\\Python\\afaina-evobliss-software-68090c0edb16\\automatizace\\script_run1.py', 'runserver'],
stdout=PIPE, stdin=PIPE, bufsize=1, text=True)
def monitor_output(q):
while True:
if process and process.stdout:
msg = process.stdout.readline()
if msg:
q.put(msg)
def check_output(q):
while not q.empty():
output.insert('end', q.get())
output.see('end')
root.after(10, check_output, q)
# Zpracování vstupu uživatele z textového pole
def send_response(event=None):
response = output.get("end-3c", "end-1c").strip() # Získá poslední zadání uživatele
if response:
output.config(state='normal') # Umožní editaci
output.insert('end', f"\nUser response: {response}\n") # Zobrazí uživatelskou odpověď v textovém poli
output.see('end') # Posune zobrazení na konec
output.config(state='disabled') # Znovu nastaví na jen pro čtení
# Odesílá odpověď do skriptu
if process and process.stdin:
process.stdin.write(response + "\n") # Zapisuje odpověď do stdin skriptu
process.stdin.flush()
# Funkce pro zastavení procesu a vymazání výstupu
def stop_process_and_clear(event=None):
global process
if process:
process.terminate() # Zastaví běžící skript
process = None
output.config(state='normal') # Povolení editace
output.delete(1.0, 'end') # Vymazání celého textového pole
output.config(state='disabled') # Zpět do jen pro čtení
# Vytvoření tlačítka
start_button = tk.Button(root, text="Start", command=run_server,
bg='lightskyblue', fg='black', relief = "raised",
borderwidth= 2, width=12, height=2, # Nastavení velikosti tlačítka
font=('Helvetica', 15, 'bold')) # Nastavení tučného písma
#start_button.pack(pady=20)
start_button.grid(row=0, column=0, padx=20, pady=10, sticky='nw')
choose_button = tk.Button(root, text="Choose", command=run_server1,
bg='lightskyblue', fg='black', relief = "raised",
borderwidth= 2, width=12, height=2, # Nastavení velikosti tlačítka
font=('Helvetica', 15, 'bold')) # Nastavení tučného písma
#choose_button.pack(pady=20)
choose_button.grid(row=0, column=1, padx=10, pady=10, sticky='nw')
# Výstupní pole pro text
output = Text(root, width=50, height=10, bg='lightskyblue', fg='black', relief = "raised",
font=('Helvetica', 9, 'bold'),borderwidth= 2)
#output.pack(padx=20, pady=20)
output.grid(row=1, column=0, columnspan=2, padx=20, pady=10)
# Detekce stisknutí Ctrl+C a volání funkce stop_process_and_clear
def on_ctrl_c(event=None):
stop_process_and_clear()
# Připojení události Enter k textovému poli
output.bind("", send_response)
# Přidání vazby pro klávesovou zkratku Ctrl+C
root.bind('', on_ctrl_c)
# Startovací vlákno pro čtení výstupu z procesu
threading.Thread(target=monitor_output, args=[queue], daemon=True).start()
check_output(queue)
root.mainloop()
Привет
Напишите номер:
Подробнее здесь: https://stackoverflow.com/questions/790 ... d-terminal