ObjectListView 1.2 (Python)를 사용하고 있는데 이상한 행동으로 인해 혼란 스럽습니다. 이중 필드가있는 개체가 있습니다. OLV는 0이 아닌 값 (int 또는 double 여부)을 표시하지만 값이 0 일 때마다 해당 열의 해당 객체에 대해 아무 것도 표시하지 않습니다.ObjectListView가 0을 표시하지 않습니다.
SSCCE는 :
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import wx
from ObjectListView import ObjectListView, ColumnDefn
class MyObj:
def __init__(self, name, id):
self.name = name
self.id = id
@staticmethod
def getObjects():
objList = []
for i in range(0,5):
objList.append(MyObj("item" + str(i), i))
return objList
class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
wx.Frame.__init__(self, *args, **kwds)
self.Init()
def Init(self):
self.InitModel()
self.InitWidgets()
self.InitObjectListView()
def InitModel(self):
self.songs = MyObj.getObjects()
def InitWidgets(self):
panel = wx.Panel(self, -1)
sizer_1 = wx.BoxSizer(wx.VERTICAL)
sizer_1.Add(panel, 1, wx.ALL|wx.EXPAND)
self.SetSizer(sizer_1)
self.myOlv = ObjectListView(panel, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER)
sizer_2 = wx.BoxSizer(wx.VERTICAL)
sizer_2.Add(self.myOlv, 1, wx.ALL|wx.EXPAND, 4)
panel.SetSizer(sizer_2)
self.Layout()
def InitObjectListView(self):
self.myOlv.SetColumns([
ColumnDefn("Title", "left", 120, "name"),
ColumnDefn("ID", "left", 120, "id")
])
self.myOlv.SetObjects(self.songs)
if __name__ == '__main__':
app = wx.PySimpleApp(1)
wx.InitAllImageHandlers()
frame_1 = MyFrame(None, -1, "ObjectListView Simple Example1")
app.SetTopWindow(frame_1)
frame_1.Show()
app.MainLoop()
완벽하게 일했다! 누가 짐작 했겠습니까? 답변 주셔서 감사합니다! –
@Fuzzy 대답은 OLV의 버그가 아니지만 http://objectlistview.sourceforge.net/python/majorClasses.html에 문서화되어 있습니다. – Werner
@Werner : 오랜 시간이 지났습니다. 하지만 여전히 버그라고 생각합니다. 링크 된 문서 (내가 볼 수있는 한)와 코드의 주석 모두는 기본적으로 빈 문자열 (모든 거짓 값이 아닌)으로 대체되어야하는 것은 '없음'임을 제안합니다. 이제 다른 대답은 완벽하게 좋은 해결 방법을 제공하지만 OLV가 의도 한대로 작동한다는 것을 의미하지는 않습니다. – Blckknght