Python pyGTK和Builder XML文件的最佳实践

Python pyGTK和Builder XML文件的最佳实践,python,Python,我通常使用Glade设计GUI,从而生成一系列构建器XML文件(每个应用程序窗口一个这样的文件) 现在我的想法是定义一个类,例如MainWindow,它继承自gtk.Window,并实现应用程序主窗口的所有信号处理程序。问题是,当我从包含XML文件中检索主窗口时,它将作为gtk.window实例返回 到目前为止,我采用的解决方案如下: 我用以下方式定义了一个类“Window” class Window(): def __init__(self, win_name): builder =

我通常使用Glade设计GUI,从而生成一系列构建器XML文件(每个应用程序窗口一个这样的文件)

现在我的想法是定义一个类,例如MainWindow,它继承自gtk.Window,并实现应用程序主窗口的所有信号处理程序。问题是,当我从包含XML文件中检索主窗口时,它将作为gtk.window实例返回

到目前为止,我采用的解决方案如下:

我用以下方式定义了一个类“Window”

class Window():
def __init__(self, win_name):
    builder = gtk.Builder()
    self.builder = builder
    builder.add_from_file("%s.glade" % win_name)
    self.window = builder.get_object(win_name)
    builder.connect_signals(self)

def run(self):
    return self.window.run()

def show_all(self):
    return self.window.show_all()

def destroy(self):
    return self.window.destroy()

def child(self, name):
    return self.builder.get_object(name)
在实际的应用程序代码中,我定义了一个新类,比如MainWindow,它继承了frow Window,如下所示

class Main(Window):
def __init__(self):
    Window.__init__(self, "main")

### Signal handlers #####################################################

def on_mnu_file_quit_activated(self, widget, data = None):
    ...
字符串“main”指的是名为“main”的主窗口,它驻留在XMLBuilder文件“main.glade”中(这是我决定采用的一种约定)

所以问题是:我如何通过定义类Foo(gtk.Window)直接从gtk.Window继承,并将builder.get_对象(win_name)的返回值重铸到Foo