python - PyGTK flytter to vinduer på en gang

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger Python 2.7 med PyGTK og GTK af de tilsvarende versioner. (>>> import gtk >>> gtk.pygtk\_version (2, 24, 0) >>> gtk.gtk\_version (2, 24, 8)) Jeg skriver en ansøgning, hvor der er et hovedvindue og valgfrit tilstand af en skiftknap) også et indstillingsvindue ved siden af ​​det.


Jeg forsøger at flytte de to vinduer på en gang (gør indstillingsvinduet STICK til hovedvinduet, flyt det med hovedvinduet). Det fungerer som standard på mine venner MacBook (ingen indsats fra min side), men ikke på min Windows 7-maskine. Jeg fandt en løsning, der gør indstillingsvinduet til hovedet, efter at flytningen i hovedvinduet er færdig - det er dog ikke det, jeg tilstræber.


Rediger: FYI, 'settings\_window' har forældren 'main\_window', hvilket er (jeg gætter?) Gør det rigtige job til Mac OS.


Eventuelle ideer vil blive meget værdsat.
Thx, Erthy

Bedste reference


dette eksempel virker (på Ubuntu):


#!/usr/bin/env python
#coding:utf8   
""" 
This PyGtk example shows two windows, the master and his dog. 
After master window moves or changes size, the dog window moves to always stay at its right border. 
This example should also account for variable thickness of the window border.
Public domain, Filip Dominec, 2012
"""

import sys, gtk

class Main: 
    def \_\_init\_\_(self):
        self.window1 = gtk.Window(); self.window1.set\_title("Master")
        self.window2 = gtk.Window(); self.window2.set\_title("Dog")

        self.window1.connect('configure\_event', self.on\_window1\_configure\_event) # move master -> move dog
        self.window1.connect('destroy', lambda w: gtk.main\_quit()) # close master -> end program

        self.window1.show\_all()
        self.window2.show\_all()

    def on\_window1\_configure\_event(self, *args):
        print "Window 1 moved!"
        x, y   = self.window1.get\_position()
        sx, sy = self.window1.get\_size()
        tx = self.window1.get\_style().xthickness
        self.window2.move(x+sx+2*tx,y)

MainInstance = Main()       
gtk.main()