使用PyGTK创建子窗口

时间:2015-06-21 22:24:39

标签: python user-interface pygtk

我使用PyGTK在python中创建一个gui,我无法弄清楚如何制作一个子窗口。例如,我有我的主窗口:

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()

当我点击子窗口按钮时,我想启动一个独立于我的主窗口的新窗口,这将允许我仍然操作主窗口而不关闭子窗口。我怎么能这样做?

1 个答案:

答案 0 :(得分: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的主循环将永远不会停止,并且您无法控制回键盘。