gtk.Builder، فئة فرعية الحاويات وملزمة الحاجيات الطفل

StackOverflow https://stackoverflow.com/questions/411708

سؤال

وأنا أحاول أن استخدام الحاجيات حاوية مخصصة في ملفات تعريف gtk.Builder. بقدر ما instantiating تلك الحاجيات، ويعمل كبيرة:

#!/usr/bin/env python

import sys 
import gtk 

class MyDialog(gtk.Dialog):
    __gtype_name__ = "MyDialog"


if __name__ == "__main__":
    builder = gtk.Builder()
    builder.add_from_file("mydialog.glade")

    dialog = builder.get_object("mydialog-instance")
    dialog.run()

والسؤال الآن هو أن أقول لدي القطعة gtk.TreeView داخل هذا الحوار. أنا في محاولة لمعرفة كيفية ربط تلك القطعة إلى متغير مثيل MyDialog.

واحد بديلا رخيص الثمن ولا أستطيع أن أفكر من هو الدعوة الى طريقة إضافية بعد الحصول على القطعة الحوار مثل ذلك:

dialog = builder.get_object("mydialog-instance")
dialog.bind_widgets(builder)

ولكن الذي يبدو محرجا إلى حد ما. وقد أي شخص حل هذه بالفعل أو لديه فكرة أفضل عن كيفية التوجه نحو القيام بذلك؟

شكرا،

هل كانت مفيدة؟

المحلول

حسنا، أعتقد الإجابة على سؤالي الخاص.

وطريقة واحدة للقيام أعلاه لتجاوز parser_finished gtk.Buildable ل()، الذي يتيح الوصول إلى كائن باني أن إنشاء مثيل الفئة نفسها. ويطلق على طريقة بعد أن تم تحميل ملف. xml بأكمله، لذلك كل من الحاجيات الإضافية التي قد ترغب في الحصول على عقد من هي موجودة بالفعل وintialized:

class MyDialog(gtk.Dialog, gtk.Buildable):
    __gtype_name__ = "MyDialog"

    def do_parser_finished(self, builder):
        self.treeview = builder.get_object("treeview1")
        # Do any other associated post-initialization

وشيء واحد هو أن نلاحظ أن لسبب ما (على الأقل بالنسبة لي، في جتك 2.12)، إذا كنت لا ترث صراحة من gtk.Buildable، لا يحصل استدعاء الأسلوب تجاوز، حتى يعتقد gtk.Dialog بالفعل تطبق الواجهة يمكن البناء عليها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top