Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python gtk多窗口_Python_Linux_Window_Gtk_Multi Window - Fatal编程技术网

python gtk多窗口

python gtk多窗口,python,linux,window,gtk,multi-window,Python,Linux,Window,Gtk,Multi Window,python gtk模块有一个大问题(对我来说!) 我可以打开多个窗口;但我不能单独关闭(一次,一个窗口)。 如果我关闭一个窗口,所有窗口都会自动关闭。 我只想关闭第一个窗口。关闭第一个窗口后,出现一个新窗口(由我选择) 例如: #!/usr/bin/env python import pygtk pygtk.require20() import gtk class CLS1(object): def __init__(self): self.mywindow = g

python gtk模块有一个大问题(对我来说!)

我可以打开多个窗口;但我不能单独关闭(一次,一个窗口)。 如果我关闭一个窗口,所有窗口都会自动关闭。 我只想关闭第一个窗口。关闭第一个窗口后,出现一个新窗口(由我选择)

例如:

#!/usr/bin/env python

import pygtk
pygtk.require20()
import gtk

class CLS1(object):
    def __init__(self):
        self.mywindow = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.mywindow.connect("delete_event", gtk.main_quit)

        self.btn = gtk.Button("Cls1|Btn")

        self.mywindow.add(self.btn)

        self.mywindow.show_all()

    def main(self):
        gtk.main()

class CLS2(object):
    def __init__(self):
        self.mywindow = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.mywindow.connect("delete_event", gtk.main_quit)

        self.btn = gtk.Button("Cls2|Btn")

        self.mywindow.add(self.btn)

        self.mywindow.show_all()

    def main(self):
        gtk.main()


class APP(object):
    def __init__(self):
        self.mywindow = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.mywindow.connect("delete_event", gtk.main_quit)

        self.hori = gtk.HBox()

        self.btn1 = gtk.Button("AppBtn1")
        self.btn2 = gtk.Button("AppBtn2")

        self.btn1.connect("clicked", self.show_me , "AppBtn1")

        self.btn2.connect("clicked", self.show_me , "AppBtn2")

        self.hori.pack_start(self.btn1)
        self.hori.pack_start(self.btn2)

        self.mywindow.add(self.hori)

        self.mywindow.show_all()


    def show_me(self, penar, data):
        if data=="AppBtn1" :
            CLS1().main()

        if data=="AppBtn2":
            CLS2().main()

        gtk.main_quit()

    def main(self):
        gtk.main()

APP().main()
我想要这个:

1-我将运行该程序

2.“应用程序”类将工作,并将出现“应用程序”窗口

3-如果我单击按钮(AppBt1或APPBT2);“应用程序”窗口将关闭(自动关闭;不是由我关闭!)

4-如果我被点击“应用”窗口上的“AppBtn1”按钮(@步骤3);“CLS1”类将工作,其窗口将打开

,或者如果在“应用程序”窗口中单击了“AppBtn2”按钮(@步骤3);“CLS2”类将工作,其窗口将打开

我只想在程序运行时在屏幕上显示一个窗口;如果我点击一个按钮;它的窗口将关闭,一个新窗口将打开(由我选择,并自动!)

我该怎么做?你能写出它的代码吗:)
非常感谢

一个更好的方法可能是修改已经打开的窗口,而不是关闭它再打开另一个。

一个更好的方法可能是修改已经打开的窗口,而不是关闭它再打开另一个。

调用gtk.main\u quit将杀死整个程序(它基本上停止了gtk)。所以你需要的是,当最后一个窗口关闭时停止GTK。您当前正在做的是在任何窗口关闭时停止GTK

所以,只需使用一个全局变量,您将使用它作为windows open的计数器。在delete事件处理程序上,减小该计数器,如果它达到0,则表示您没有打开的窗口,您可以调用gtk.main_quit,否则,不执行任何操作,窗口将正常销毁


要关闭父窗口,只需在连接到单击的
信号时将父窗口作为最后一个参数传递。在相关的回调中,您将获得最后一个参数并对其调用gtk.Widget.destroy。

调用gtk.main\u quit将杀死整个程序(它基本上停止了gtk)。所以你需要的是,当最后一个窗口关闭时停止GTK。您当前正在做的是在任何窗口关闭时停止GTK

所以,只需使用一个全局变量,您将使用它作为windows open的计数器。在delete事件处理程序上,减小该计数器,如果它达到0,则表示您没有打开的窗口,您可以调用gtk.main_quit,否则,不执行任何操作,窗口将正常销毁

要关闭父窗口,只需在连接到单击的
信号时将父窗口作为最后一个参数传递。在相关的回调中,您将获得最后一个参数,并对其调用gtk.Widget.destroy