我正在使用ObjectListView 1.2(Python),並且很奇怪的行爲感到困惑。 我有一個雙重字段的對象。 OLV將顯示該值,如果它不是零(無論是int還是double),但是隻要該值爲零,它就不會顯示該列中該對象的任何內容。ObjectListView不顯示零
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的一個bug,但是http://objectlistview.sourceforge.net/python/majorClasses.html中記錄的一個功能 – Werner
@Werner:我看了很久,但我仍然認爲這是一個錯誤。你鏈接到的文檔(據我所見)和代碼中的註釋都表明它只是'None',默認情況下應該用空字符串替換,而不是所有的falsey值。現在,另一個答案確實提供了一個非常好的解決方法,但這並不意味着OLV按預期工作。 – Blckknght