在 python 中关闭子 window 而不关闭主 window PyGTK
close sub-window without closing main window PyGTK in python
我正在使用 PyGtk 在 python 中创建一个 gui,我想创建一个从我的主 window 分支出来的子 window,但与用户将要创建的对话框不同能够与主 window 交互,而无需关闭子 window。以下代码由@jcoppens 在我询问如何实现子 window 的前一个问题中向我演示,我目前正在使用它来测试我的想法:
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()
当我 运行 这段代码时,我能够打开我的子 window 并且仍然能够像我希望的那样与我的主 window 交互但不幸的是当我关闭时我的子 window 主 window 随之关闭。我如何编写代码以仅关闭子 window 而不退出应用程序?
可以简单地隐藏 window:
class AnotherWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="GCT")
self.connect("destroy", self.on_destroy)
self.add(Gtk.Label("This is another window"))
self.show_all()
def on_destroy(self, widget):
widget.hide()
我正在使用 PyGtk 在 python 中创建一个 gui,我想创建一个从我的主 window 分支出来的子 window,但与用户将要创建的对话框不同能够与主 window 交互,而无需关闭子 window。以下代码由@jcoppens 在我询问如何实现子 window 的前一个问题中向我演示,我目前正在使用它来测试我的想法:
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()
当我 运行 这段代码时,我能够打开我的子 window 并且仍然能够像我希望的那样与我的主 window 交互但不幸的是当我关闭时我的子 window 主 window 随之关闭。我如何编写代码以仅关闭子 window 而不退出应用程序?
可以简单地隐藏 window:
class AnotherWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="GCT")
self.connect("destroy", self.on_destroy)
self.add(Gtk.Label("This is another window"))
self.show_all()
def on_destroy(self, widget):
widget.hide()