Ich habe ein Problem, wo ich die random_task()
Funktion in der ThreadedTask-Klasse aufrufen möchte und nicht sicher war, wie das geht. Ich benutze Python 2.7, wenn das einen Unterschied macht. Ich möchte auch in der Lage sein, es in einer Art Schleife zu laufen, die sich wiederholen würde, bis die Anwendung geschlossen ist, aber ich werde das in einer anderen Frage fragen.Tkinter Multiprocessing und Aufruf von Funktionen aus einer anderen Klasse
import Tkinter as tk
import os, Queue, threading, time
class TestClass(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.create_view()
def create_view(self):
self.labelTitle = tk.Label(self, text="page",)
self.labelTitle.pack()
def random_task(self):
print("test")
def process(self):
self.queue = Queue.Queue()
ThreadedTask(self.queue).start()
self.master.after(100, self.process_queue)
def process_queue(self):
try:
msg = self.queue.get(0)
except Queue.Empty:
self.master.after(100, self.process_queue)
class ThreadedTask(threading.Thread):
def __init__(self, queue):
threading.Thread.__init__(self)
self.queue = queue
def run(self):
#I want to run random_task() here
time.sleep(5)
self.queue.put("Task finished")
app = TestClass()
app.geometry("800x600")
app.mainloop()
Ja, das hat funktioniert, danke! – ConorYoungs
@ConorYoungs Ich bin froh, dass ich helfen konnte! Dieser 'Tweak' ist in der Tat nicht auf den ersten Blick offensichtlich, aber es lohnt sich, daran zu denken! – linusg