Подскажите как правильно это реализовать.
Пока такой вариант, но понимаю, что он в корне не правильный:
import time
import threading
from gi.repository import Gtk, Gdk, GLib, GObject
class ProgressBarWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="ProgressWin")
self.set_border_width(20)
self.connect("delete-event", self.ex)
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
self.add(vbox)
self.progressbar = Gtk.ProgressBar()
vbox.pack_start(self.progressbar, True, True, 0)
self.show_all()
def ex(self, *args):
self.destroy()
Gtk.main_quit()
def main(self):
threading.Thread(target=Gtk.main, daemon=True).start()
def on_activity(self, *args):
GLib.idle_add(self.progressbar.set_fraction, args[0])
class TopWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="TopWin")
self.connect("delete-event", self.m_ex)
self.s = ProgressBarWindow()
self.s.main()
time.sleep(0.5)
GLib.idle_add(self.s.on_activity, 0.20)
time.sleep(0.5)
GLib.idle_add(self.s.on_activity, 0.40)
self.set_border_width(5)
time.sleep(0.5)
GLib.idle_add(self.s.on_activity, 0.60)
self.set_default_size(200, 150)
time.sleep(0.5)
GLib.idle_add(self.s.on_activity, 0.80)
self.spinner = Gtk.Spinner()
self.spinner.start()
time.sleep(0.5)
GLib.idle_add(self.s.on_activity, 1.00)
self.add(self.spinner)
self.show_all()
self.s.ex()
self.main()
def m_ex(self, *args):
for x in range(Gtk.main_level()):
Gtk.main_quit()
def main(self):
Gtk.main()
GObject.threads_init()
TopWindow()