2015-04-26 35 views
23

Glade (3.18) içinde bir Python 3 programı (PyGObject kullanarak) tarafından çağrılan bir GUI var. GtkDialog bir geçici ana olmadan eşleştirildi

Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged. 

Nasıl bu uyarıyı düzeltebilirim

: Diyorum programı çalıştıran uyarılar (Fedora 21) bir sürü olsun? Tüm iletişim pencereleri için Glade'de Transient for: main_window alanına doldurmayı denedim, ancak uyarılar görünmeye devam ediyor.

cevap

12

Bu uyarıyı, GtkDialog'a ebeveyne sahip olmasını sağlayarak düzeltirsiniz. İlgili işlevler gtk_window_set_transient_for() (bu pencereyi her zaman en üstte olacak şekilde ayarlar veya için , diğeri) ve isteğe bağlı olarak gtk_window_set_modal() modelini kalıcı bir iletişim kutusu haline getirir. Bu sonuçta çeşitli GtkDialog kurucularının yaptığı şeydir.

+0

Bu, "main_window" örneğini her bir iletişim sınıfına iletmem gerektiği anlamına mı geliyor? Eğer iletişim kutusunda 'self.builder.add_objects_from_file (..." main_window ")' i kullanırsam, hata alıyorum çünkü "main_window" sinyalleri bağlı değil (elbette ki doğrudur, çünkü diyalog farklı sinyallere sahiptir ana pencereden). Glade'deki ayar benzer nedenlerden dolayı başarısız olabilir. Geçici seçenek ayarlanır, ancak çalışma zamanında iletişim kutusunun 'main_window' örneğine erişimi yoktur. – tobias47n9e

+0

Diyaloğunu gösterirken 'set_transient_for() 'diyemeyeceğiniz bir sebep var mı? "Mapped" bölümünün anlamı – andlabs

+0

Bu muhtemelen aptalca bir hata yaptı, ancak aşağıdaki satırlardan herhangi birini eklemek, hata iletisine yardımcı olmaz: https://github.com/tobias47n9e/innstereo/blob/ master/innstereo/layer_properties.py # L47 – tobias47n9e