2015-06-21 60 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的主循環將永遠不會停止,你不會控制回來到鍵盤。