wxpython: اشتقاق wx.listitem لكن wx.listctrl يعيد فقط الفصل القديم
سؤال
لدي مشكلة صغيرة مع الفصول المشتقة ، وهي 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
, ، يحتاج المتجر إلى المعلومات والتحكم في المظاهر هناك.