如何检索Gtk.TextBuffer的名称

时间:2015-08-19 22:38:07

标签: python pygtk glade

我正在使用python和pygtk。接口在glade文件中描述。我正在编写一个通用的MPV接口,尽可能通用。

我将glade文件中的小部件与模型中的字段相关联,我不想将父级演示者类子类化。我想检索在glade文件中声明的textbuffer小部件的名称:

<object class="GtkTextBuffer" id="tag_desc_textbuffer">
  <signal name="changed" handler="on_textbuffer_changed" swapped="no"/>
</object>

在我的泛型 on_textbuffer_changed中我收到文本缓冲区实例作为参数,但我如何得到它的名字?

现在我知道您无法使用任何小部件的字段name来获取其name,您需要使用这样的静态函数:gtk.Buildable.get_name(widget)

如果我尝试为gtk.TextBuffer执行此操作,则会收到此错误:

TypeError: descriptor 'get_name' requires a 'gtk.Buildable' object but received a 'gtk.TextBuffer'

gtk.TextBuffer甚至不知道idname

AttributeError: 'gtk.TextBuffer' object has no attribute 'name'
AttributeError: 'gtk.TextBuffer' object has no attribute 'id'

任何提示?

我想我要写一个专用的处理程序,其中小部件的名称已经知道。

def on_tag_desc_textbuffer_changed(self, widget, value=None):
    return GenericEditorPresenter.on_textbuffer_changed(
        self, widget, value, attr='description')

我不喜欢这个想法,因为最小子类化的演示者已经将所有view.widget_name→model.field_name与'tag_desc_textbuffer'相关联,包括'description'。我不喜欢重复这些信息......

0 个答案:

没有答案