wxpython: اشتقاق wx.listitem لكن wx.listctrl يعيد فقط الفصل القديم

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

  •  01-10-2019
  •  | 
  •  

سؤال

لدي مشكلة صغيرة مع الفصول المشتقة ، وهي wx.ListItem مع wx.ListCtrl. أنا مستمدة بنجاح wx.ListItem ك MediaItem, ، لم ينته الرمز لكنك تحصل على النقطة:

class MediaItem(wx.ListItem):
    def __init__ (self, fullname):
        wx.ListItem.__init__(self)
        self.fullname = fullname
        self.filename = os.path.basename(fullname)
        # snap...

    def getFullname(self):
        return self.fullname

wx.ListCtrl يقبل بكل سرور ذلك بسبب فلسفة بطة الثعبان. لكن المشكلة الآن هي استخدام الطريقة wx.ListCtrl.GetItem(index) إرجاع أ ListItem, ، ليس MediaItem. اشتكى بيثون wx.ListItem عدم وجود سمة getFullname.

يبدو أن الكائنات الصب هي الطريقة الخاطئة للتعامل مع الحل. ربما لا علاقة لهذا المشكلة ، لكنني ألصق الخط المخالف كما هو: أيضًا:

filename = self.filelist.GetItem(event.GetIndex()).getFullname()

أين self.filelist هو wx.ListCtrl.

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

المحلول

أعتقد أنني يجب أن تمتصها فقط ، والتراجع إلى مسك الدفاتر اليدوي دون المستوى الأمثل. عندما يتم ذلك بذوق ، فهي ليست مشكلة كبيرة ولكن كان لدي آمال أعلى في Wxpython.

من المفترض (من ما بحثت عنه وجمعه) القضية مع الطبيعة الوكيل لقاعدة فئة Wxpython. هل كتبوا في Python النقي ، أو قمت بترميزه في C ++ ، كان من شأنه أن يعمل بشكل جيد. ولكن الآن فشل تعدد الأشكال للكائنات بسبب القيود في التصميم: لن تحصل فئة C ++ WX الأصلية على أي شيء سوى أ wx.ListItem وسيعود بالتأكيد wx.ListItem العودة إلى wxpython.

"الحل" هكذا هو الاستخلاص wx.ListCtrl بدلاً من wx.ListItem, ، يحتاج المتجر إلى المعلومات والتحكم في المظاهر هناك.

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