status.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import queue
  2. import tkinter as tk
  3. from tkinter import ttk
  4. class StatusUi:
  5. def __init__(self, frame, q):
  6. self.q = q
  7. self.frame = frame
  8. self.pb_max = 100
  9. # ttk.Label(self.frame, text='This is just an example of a third frame').grid(
  10. # column=0, row=1, sticky=W)
  11. self.progress_bar = ttk.Progressbar(
  12. self.frame, mode='determinate')
  13. self.progress_bar.pack(expand=True, fill=tk.X, side=tk.TOP)
  14. self.frame.after(100, self.check_q)
  15. def check_q(self):
  16. # Check every 100ms if there is a new message in the queue to display
  17. while True:
  18. try:
  19. record = self.q.get(block=False)
  20. except queue.Empty:
  21. break
  22. else:
  23. if record:
  24. step = 1
  25. self.progress_bar.step(step)
  26. if step >= self.pb_max:
  27. step = 1
  28. else:
  29. step += 1
  30. else:
  31. self.progress_bar.config(value=0)
  32. self.frame.after(100, self.check_q)