Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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/7/python-2.7/5.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
如何创建一个从Gtk builder获取定义的python类_Python_Python 2.7_Pygobject - Fatal编程技术网

如何创建一个从Gtk builder获取定义的python类

如何创建一个从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

我已经在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.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>

请注意,它是一个笔记本,只是一个随机的例子,基于你的小部件名称,与它是另一个小部件类型相比,可能没有意义