Я создаю графический интерфейс GTK в Python, и мне нужно получить некоторые данные из базы данных, что занимает довольно много времени, поэтому графический интерфейс останавливается.
Поэтому я сейчас использую Threads для запуска обновления "на заднем плане ":
Thread(target=self.updateOrderList).start()
У меня есть класс GUI со всеми соответствующими методами для манипулирования GUI. Мое решение работает 80% времени, но когда не происходит сбой GTK, и выводится следующее:
[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
python3.6: ../../src/xcb_io.c:165: dequeue_pending_request:
В других случаях оно работает хорошо, данные загружаются и обновляется графический интерфейс.
edit: иногда я получаю эту ошибку:
Gdk-Message: 11:13:42.848: main.py: Fatal IO error 11 (Die Ressource ist zur Zeit nicht verfügbar) on X server :0
Иногда я нажимаю кнопку обновления несколько раз, и она работает, но в какой-то момент этого не происходит.
Mymain.py выглядит так:
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GObject
import gui
GObject.threads_init()
# start gui
gui.Gui()
Gtk.main()
Есть идеи, что здесь происходит?
Маркус