Окно не отображается в интерпретаторе Python в GTK3 без Gtk.main () - PullRequest
5 голосов
/ 04 марта 2012

В GTK2 мне нравилось создавать графический интерфейс в интерпретаторе (ipython или plain python) «на лету» и видеть изменения в реальном времени, как это:

>>> import gtk
>>> win = gtk.Window()
>>> win.connect('delete-event', gtk.main_quit)
10L
>>> win.show_all()

Что приведет к отображению окна, в которое я мог бы добавить объекты.

Я перехожу на Gtk3 отчасти потому, что это будущее, а отчасти потому, что я иногда использую Glade, который сейчас является только Gtk3. При этом то же самое с GTK3 НЕ показывает окно:

>>> from gi.repository import Gtk
>>> win = Gtk.Window()
>>> win.connect('delete-event', Gtk.main_quit)
13L
>>> win.show_all()

Увы, нет окна после этой последней строки. Это не будет отображаться до:

>>> Gtk.main()

Я даже пытался:

>>> win.show_now()

Который ничего не сделал.

Есть идеи, как построить в реальном времени в GTK3?

Спасибо

Narnie

1 Ответ

0 голосов
/ 04 марта 2012

Я попытался обработать ожидающие события со следующей однострочной:

>>> while Gtk.events_pending(): Gtk.main_iteration()

, и похоже, что он ведет себя так же.Это не так удобно, но вы все равно можете выполнить некоторую работу в интерпретаторе.

В качестве альтернативы, если вы разрабатываете приложение Gtk, pdb.set_trace все равно будет работать и позволит вам отлаживать обратные вызовы, если вы это делаетеищу.

...