Użyłem odpowiedzi podanej w PyGTK FAQ, ale to nie działa z PyGObject. Dla Twojej wygody, tutaj jest przypadek testowy, który działa z PyGTK, a następnie przetłumaczona wersja, która nie działa z PyGObject.Jak podnieść okno, które jest zminimalizowane lub pokryte PyGObject?
PyGTK Wersja: wersja
import gtk
def raise_window(widget, w2):
w2.window.show()
w1 = gtk.Window()
w1.set_title('Main window')
w2 = gtk.Window()
w2.set_title('Other window')
b = gtk.Button('Move something on top of the other window.\nOr, minimize the'
'other window.\nThen, click this button to raise the other'
'window to the front')
b.connect('clicked', raise_window, w2)
w1.add(b)
w1.show_all()
w2.show_all()
w1.connect('destroy', gtk.main_quit)
gtk.main()
PyGObject:
from gi.repository import Gtk
def raise_window(widget, w2):
w2.window.show()
w1 = Gtk.Window()
w1.set_title('Main window')
w2 = Gtk.Window()
w2.set_title('Other window')
b = Gtk.Button('Move something on top of the other window.\nOr, minimize the'
'other window.\nThen, click this button to raise the other'
'window to the front')
b.connect('clicked', raise_window, w2)
w1.add(b)
w1.show_all()
w2.show_all()
w1.connect('destroy', Gtk.main_quit)
Gtk.main()
Po kliknięciu przycisku w wersji PyGObject, drugie okno nie jest podniesiona, a ja dostać ten błąd:
Traceback (most recent call last):
File "test4.py", line 4, in raise_window
w2.window.show()
AttributeError: 'Window' object has no attribute 'window'
Zgaduję więc, że musi istnieć jakiś inny sposób, aby uzyskać plik Gdk.window w PyGObject?
Czy jest jakiś inny/lepszy sposób osiągnięcia tego samego celu?
Wszelkie pomysły?
Niesamowite, to wydaje się jeszcze bardziej poprawne niż to, co robiłem wcześniej. – dumbmatter