如何创建一个从Gtk builder获取定义的python类
我已经在glade上完成了整个GUI定义,我将PyGObject与Python2.7结合使用。我制作了一些具有id的小部件,我可以通过调用相应的id来检索这些对象,现在我一直在做这样的事情:如何创建一个从Gtk builder获取定义的python类,python,python-2.7,pygobject,Python,Python 2.7,Pygobject,我已经在glade上完成了整个GUI定义,我将PyGObject与Python2.7结合使用。我制作了一些具有id的小部件,我可以通过调用相应的id来检索这些对象,现在我一直在做这样的事情: class MLPNotebookTab: def __init__(self): builder = Gtk.Builder.new_from_file(UI_FILE) builder.connect_signals(self) self.note
class MLPNotebookTab:
def __init__(self):
builder = Gtk.Builder.new_from_file(UI_FILE)
builder.connect_signals(self)
self.notebook = builder.get_object('MLPNotebook')
def add_tab(self, content):
pages = self.notebook.get_n_pages()
label = "MLP #" + str(pages + 1)
tab = NotebookTabLabel(label, self.notebook, pages + 1)
self.notebook.append_page(content, tab.header)
def on_btn_add_tab_clicked(self, button):
self.add_tab(Gtk.Label(label= "test"))
from gi.repository import Gtk
from gi_composites import GtkTemplate
PATH_TO_UI_FILE='foo'
@GtkTemplate(ui=PATH_TO_UI_FILE)
class MLPNotebook(Gtk.Notebook):
__gtype_name__ = 'MLPNotebook'
def __init__(self):
Gtk.Notebook.__init__(self)
self.init_template()
用户界面文件的定义和它本来的一样,只是一个笔记本。我想要的是使类本身成为笔记本,并预加载我们在ui文件中设置的其他属性。我在这里找到了某种实现方式:
我不知道这是不是最好的办法。请帮忙 您可以使用此第三方库(只需复制到树中): 看起来是这样的:
class MLPNotebookTab:
def __init__(self):
builder = Gtk.Builder.new_from_file(UI_FILE)
builder.connect_signals(self)
self.notebook = builder.get_object('MLPNotebook')
def add_tab(self, content):
pages = self.notebook.get_n_pages()
label = "MLP #" + str(pages + 1)
tab = NotebookTabLabel(label, self.notebook, pages + 1)
self.notebook.append_page(content, tab.header)
def on_btn_add_tab_clicked(self, button):
self.add_tab(Gtk.Label(label= "test"))
from gi.repository import Gtk
from gi_composites import GtkTemplate
PATH_TO_UI_FILE='foo'
@GtkTemplate(ui=PATH_TO_UI_FILE)
class MLPNotebook(Gtk.Notebook):
__gtype_name__ = 'MLPNotebook'
def __init__(self):
Gtk.Notebook.__init__(self)
self.init_template()
使用包含模板小部件的UI文件:
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="MLPNotebook" parent="GtkNotebook">
<!-- Stuff goes here -->
</template>
</interface>
请注意,它是一个笔记本,只是一个随机的例子,基于你的小部件名称,与它是另一个小部件类型相比,可能没有意义