0
ThreadedTaskクラスのrandom_task()
関数を呼びたいと思っていましたが、これをどうやって行うのかがわかりませんでした。私はPython 2.7を使用しています。私はまた、アプリケーションが閉じられるまで繰り返す何らかのループの中で実行できるようにしたいと思いますが、別の質問でそれを尋ねます。別のクラスのTkinterマルチプロセッシング関数と呼び出し関数
class ThreadedTask(threading.Thread):
def __init__(self, parent, queue):
threading.Thread.__init__(self)
self.parent = parent
self.queue = queue
def run(self):
self.parent.random_task()
time.sleep(5)
self.queue.put("Task finished")
をそして(TestClass
から)ので、同じようにそれを呼び出す:コードに
ThreadedTask(self, self.queue).start()
しかし、
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()
はい、これはうまくいきました、ありがとうございます! – ConorYoungs
@ConorYoungsうれしい!この「調整」は当初は明らかではありませんが、留意する価値があります! – linusg