2012-03-30 4 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. Я нашел обходное решение, которое заставляет окно настроек перейти на главное ПОСЛЕ перехода основного окна - это не то, к чему я стремлюсь.

Редактировать: FYI, «settings_window» имеет родительский «main_window», который (я предполагаю?) Выполняет правильную работу для Mac OS.

Любые идеи будут высоко оценены. Thx, Erthy

+0

Если вы не хотите, чтобы окно настройки для перемещения отдельно от главного окна, почему вы не просто поставить настройки в главное окно? – ptomato

ответ

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

Работы по окнам 7 тоже успешно реализованы. Посмотрим, что он делает на Mac. Спасибо, сэр! :) – erthy