43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
# Test Code for Tkinter with threads
|
|
import tkinter as Tk
|
|
import multiprocessing
|
|
from Queue import Empty, Full
|
|
import time
|
|
|
|
class GuiApp(object):
|
|
def __init__(self,q):
|
|
self.root = Tk.Tk()
|
|
self.root.geometry('300x100')
|
|
self.text_wid = Tk.Text(self.root,height=100,width=100)
|
|
self.text_wid.pack(expand=1,fill=Tk.BOTH)
|
|
self.root.after(100,self.CheckQueuePoll,q)
|
|
|
|
def CheckQueuePoll(self,c_queue):
|
|
try:
|
|
str = c_queue.get(0)
|
|
self.text_wid.insert('end',str)
|
|
except Empty:
|
|
pass
|
|
finally:
|
|
self.root.after(100, self.CheckQueuePoll, c_queue)
|
|
|
|
# Data Generator which will generate Data
|
|
def GenerateData(q):
|
|
for i in range(10):
|
|
print("Generating Some Data, Iteration %s" %(i))
|
|
time.sleep(2)
|
|
q.put("Some Data from iteration %s \n" %(i))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# Queue which will be used for storing Data
|
|
|
|
q = multiprocessing.Queue()
|
|
q.cancel_join_thread() # or else thread that puts data will not term
|
|
gui = GuiApp(q)
|
|
t1 = multiprocessing.Process(target=GenerateData,args=(q,))
|
|
t1.start()
|
|
gui.root.mainloop()
|
|
|
|
t1.join()
|
|
t2.join() |