2012-03-04 23 views
5

Trong GTK2, tôi thích xây dựng một gui trong trình thông dịch (ipython hoặc python đơn giản) "trên bay" và nhìn thấy những thay đổi trong thời gian thực như thế này :Cửa sổ không hiển thị trong trình thông dịch python trong GTK3 mà không có Gtk.main()

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

Điều này sẽ dẫn đến hiển thị cửa sổ mà tôi có thể thêm đối tượng.

Tôi thay đổi thành Gtk3 một phần vì đó là tương lai và một phần vì đôi khi tôi sử dụng Glade giờ đây chỉ là Gtk3. Làm như vậy với GTK3 KHÔNG hiển thị cửa sổ:

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

Than ôi, không có cửa sổ sau dòng cuối cùng đó. Nó sẽ không hiển thị cho đến khi:

>>> Gtk.main() 

Tôi thậm chí đã cố gắng:

>>> win.show_now() 

Mà đã không làm gì.

Bất kỳ ý tưởng nào về cách xây dựng theo thời gian thực trong GTK3?

Cảm ơn,

Narnie

Trả lời

0

tôi đã cố gắng để xử lý các sự kiện chờ giải quyết với những điều sau một liner:

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

và có vẻ có hành vi tương tự. Nó không thuận tiện, nhưng bạn vẫn có thể làm một số công việc trong thông dịch viên.

Hoặc, nếu bạn đang phát triển ứng dụng Gtk, pdb.set_trace sẽ vẫn hoạt động và cho phép bạn gỡ lỗi cuộc gọi lại nếu đó là những gì bạn đang tìm kiếm.

+0

Great work-around. Cảm ơn! – narnie

Các vấn đề liên quan