2015-06-21 59 views
0

Im和我无法弄清楚如何使让子窗口。例如,我有我的主要窗口:使用的PyGTK在Python中创建一个GUI创建一个子窗口的PyGTK

class Main(Gtk.Window): 
    def __init__(self): 
     Gtk.Window.__init__(self, title="GCT") 

     self.box = Gtk.Box() 
     self.set_default_size(300, 300) 
     self.set_position(Gtk.WindowPosition.CENTER) 
     self.table = Gtk.Table(6, 5) 

     self.button = Gtk.Button("sub-window") 
     self.table.attach(self.button, 0, 2, 0, 1) 

     self.box.add(self.table) 
     self.add.(self.box) 
     self.show_all() 

当我点击子窗口按钮,我想从我的主窗口中打开一个新窗口独立的,可以让我不关闭仍然运行在主窗口子窗口。我将如何能够做到这一点?

回答

2
from gi.repository import Gtk 

class AnotherWindow(Gtk.Window): 
    def __init__(self): 
     Gtk.Window.__init__(self, title="GCT") 
     self.connect("destroy", lambda x: Gtk.main_quit()) 

     self.add(Gtk.Label("This is another window")) 
     self.show_all() 



class Main(Gtk.Window): 
    def __init__(self): 
     Gtk.Window.__init__(self, title="GCT") 
     self.connect("destroy", lambda x: Gtk.main_quit()) 

     self.box = Gtk.Box() 
     self.set_default_size(300, 300) 
     self.set_position(Gtk.WindowPosition.CENTER) 
     self.table = Gtk.Table(6, 5) 

     self.button = Gtk.Button("sub-window") 
     self.button.connect("clicked", self.open_window) 
     self.table.attach(self.button, 0, 2, 0, 1) 

     self.box.add(self.table) 
     self.add(self.box) 
     self.show_all() 

    def open_window(self, win): 
     subw = AnotherWindow() 


def main(): 
    m = Main() 
    Gtk.main() 
    return 0 

if __name__ == '__main__': 
    main() 

每次点击sub_window按钮时,都会打开另一个窗口。他们将彼此堆放在一起,所以你不会看到太多:-)

你应该总是将连接添加到销毁行动 - 否则Gtk的主循环将永远不会停止,你不会控制回来到键盘。