Próbuję uzyskać dane wyjściowe z procesu wieloprocesorowego Pythona wyświetlanego w guziku Tkinter.Jak wysłać dane wyjściowe procesora wieloprocesorowego Pythona do guika Tkinter
mogę wysłać wyjście z procesów poprzez GUI do powłoki poleceń, na przykład uruchamiając fllowing drobny skrypt w linii poleceń powłoki:
from multiprocessing import Process
import sys
def myfunc(text):
print text
sys.stdout.flush()
def f1():
p1 = Process(target = myfunc, args = ("Surprise",))
p1.start()
def f2():
p2 = Process(target = myfunc, args = ("Fear",))
p2.start()
def fp():
myfunc("... and an almost fanatical devotion to the Pope")
a = Tk()
b1 = Button(a, text="Process 1", command=f1)
b1.grid(row=0, column=0, pady=10, padx=10, sticky=SE)
b2 = Button(a, text="Process 2", command=f2)
b2.grid(row=0, column=1, pady=10, padx=10, sticky=SE)
b3 = Button(a, text="Parent", command=fp)
b3.grid(row=0, column=2, pady=10, padx=10, sticky=SE)
if __name__ == "__main__":
a.mainloop()
Mogę również wysłać wyjście z rodzica Do pole tekstowe, na przykład poprzez modyfikację powyżej zakomentowałeś płukanie stdout w myfunc
# sys.stdout.flush()
i dodając natychmiast po „b3.grid ...” wiersz następujący:
class STDText(Text):
def __init__(self, parent, cnf={}, **kw):
Text.__init__(self, parent, cnf, **kw)
def write(self, stuff):
self.config(state=NORMAL)
self.insert(END, stuff)
self.yview_pickplace("end")
self.config(state=DISABLED)
messages = STDText(a, height=2.5, width=30, bg="light cyan", state=DISABLED)
messages.grid(row=1, column=0, columnspan=3)
sys.stdout = messages
Jednak nie mogę wymyślić, jak wysłać dane wyjściowe z procesów do pola tekstowego. Czy brakuje mi czegoś prostego?
Unutbu - Dziękuję za bardzo pomocną odpowiedź. To na pewno rozwiązuje mój przykład zabawki. (W prawdziwej aplikacji procesy będą uruchamiać różne funkcje i generować komunikaty wyjściowe spontanicznie (tj. Nie drukować jakiegoś określonego tekstu nadanego im jako parametr) .Dziękuję się, czy udało się znaleźć "taniego", aby uniknąć dostania się do rur, ale myślę, że to prawdopodobnie jest droga ... – tchaz