2012-03-30 60 views
0

我正在使用Python 2.7與PyGTK和GTK的相應版本。 (>>> import gtk >>> gtk.pygtk_version(2,24,0)>>> gtk.gtk_version(2,24,8))我正在編寫一個應用程序,其中有一個主窗口並可選(根據切換按鈕的狀態)以及其旁邊的設置窗口。PyGTK一次移動兩個窗口

我試圖一次移動兩個窗口(使設置窗口STICK到主窗口,移動主窗口)。它在我的朋友MacBook上默認工作(不需要我的努力),但不能在我的Windows 7機器上工作。我發現了一種解決方法,使設置窗口跳轉到主窗口的主窗口完成後 - 但這不是我的目標。編輯:僅供參考,「settings_window」的父級「main_window」是(我猜?)爲Mac OS做正確的工作。

任何想法將不勝感激。 THX,Erthy

+0

如果你不想設置窗口,從主窗口中,你爲什麼不乾脆把設置在單獨移動主窗口? – ptomato 2012-04-02 09:30:00

回答

2

這個例子作品(在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()     
+0

也適用於Windows 7,已成功實施。讓我們看看它在Mac上的作用。謝謝你,先生! :) – erthy 2012-03-31 10:56:13