Форум сайта python.su
0
Здравствуйте, уважаемые форумчане. Пишу небольшой скрипт, хотелось бы к нему прикруртить ГИП (GUI), но возникают проблемы. Например, есть код:
...
...
gui = Gui()
database = DataBase()
tmp1 = 1
tmp3 = 0
while 1:
tmp2 = database.results() # Делаем запрос в db
if tmp1 != tmp2:
gui.start()
gtk.main()
tmp1 = tmp2
tmp3 += 1
print tmp3
...
...
Офлайн
0
gtk.main() запускает цикл обработки событий GTK, поэтому весь код, расположенный за gtk.main() выполнится только при выхода из этого цикла.
Запускайте задачу по обработке данных из БД в отдельном потоке, а GUI будет в своем потоке.
Офлайн
41
Офлайн
0
Всем спасибо.
Проблему решил следующим способом:
def call_main_loop():
gtk.gdk.threads_init()
gtk.gdk.threads_enter()
gtk.main()
gtk.gdk.threads_leave()
gui = Gui()
database = DataBase()
gui_thread = threading.Thread(target=call_main_loop, name="t1")
gui_thread.start()
Офлайн