如何確保只有一個項目出現添加到列表中?如果匹配某些(指定的)列,我想禁止添加其他條目。ObjectListView(快速) - 僅在相同的項目不存在的情況下才添加新項目
0
A
回答
0
有很多方法可以防止將重複項添加到任何小部件/數據存儲中。我偶爾使用的方法是跟蹤我已經添加到某個對象的對象,比如ObjectListView小部件,並將其與我想要添加的新對象進行比較。例如,讓我們創建一個十六進制的小代碼生成器。
import random
used_num = []
def gen_ran_num():
val = ''.join([random.choice('ABCDEF') for x in range(6)])
if val not in used_num:
used_num.append(val)
return val
在代碼片段中,創建了一個變量來存儲生成的十六進制代碼。該函數生成一個十六進制代碼,然後檢查代碼是否已經創建。如果代碼不存在於used_num變量中,它將追加它並返回值。
我認爲你可以使用這樣的東西來防止重複信息被添加到你的ObjectListView。
當我有空時,我會用一些更多的示例代碼編輯我的答案。
- EDIT-- 好的,這裏是我的建議的簡短示例。
import wx
from ObjectListView import FastObjectListView, ColumnDefn
sample_data = (
{'id': 1, 'days': 5, 'notes': 10},
{'id': 2, 'days': 3, 'notes': 1},
{'id': 3, 'days': 5, 'notes': 10},
{'id': 4, 'days': 7, 'notes': 0},
{'id': 5, 'days': 1, 'notes': 1},
{'id': 1, 'days': 5, 'notes': 10},
{'id': 2, 'days': 3, 'notes': 1},
{'id': 2, 'days': 3, 'notes': 1},
{'id': 1, 'days': 5, 'notes': 10},
{'id': 4, 'days': 7, 'notes': 0},
{'id': 6, 'days': 2, 'notes': 11}
)
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY,
title='Sample App')
_pnl = wx.Panel(self, wx.ID_ANY)
self.dataOLV = FastObjectListView(_pnl, wx.ID_ANY,
style=wx.LC_REPORT|wx.SUNKEN_BORDER)
self.dataOLV.Hide()
self.added_to_olv = []
_sizer = wx.BoxSizer(wx.VERTICAL)
_sizer.Add(self.dataOLV, 1, wx.ALL|wx.EXPAND, 5)
_pnl.SetSizerAndFit(_sizer)
self.SetColumns()
self.SetData()
self.Layout()
def SetColumns(self):
olvColumns = [
ColumnDefn('ID', 'left', 155, 'id'),
ColumnDefn('Issue Length', 'right', 35, 'days'),
ColumnDefn('# of Notes', 'right', 35, 'notes')
]
self.dataOLV.SetColumns(olvColumns)
def SetData(self):
for item in sample_data:
if item['id'] not in self.added_to_olv:
self.added_to_olv.append(item['id'])
self.dataOLV.AddObject(item)
self.dataOLV.RefreshObjects()
self.dataOLV.Show()
def RunApp():
app = wx.App()
frame = MainFrame()
frame.Show()
app.MainLoop()
if __name__ == '__main__':
RunApp()
本示例使用字典來存儲將顯示在ObjectListView中的數據。當程序運行時,它創建FastObjectListView小部件,然後隱藏它,因爲它沒有列或數據。然後它運行一個函數來創建列,然後是一個函數來填充和顯示小部件。我測試了這個示例應用程序,最多顯示100行,並顯示不同數量的重複項。它從未顯示重複的行。
-Mike S
相關問題
- 1. 如何將新項目添加到ObjectListView?
- 2. 在不使用OnScrollListener的情況下加載新的ListView項目
- 3. 更新ObjectListView中的項目
- 4. 在沒有ARC的情況下將項目添加到項目中使用ARC
- 5. 在Netbeans的「新項目」下添加選項「Drupal項目」
- 6. 我可以在不重新啓動我的項目的情況下添加servlet
- 7. 如何在無需添加新項目的情況下更新嵌入數組中的項目
- 8. 在不改變項目的情況下更新brightway
- 9. 如何僅在條目尚不存在的情況下才能插入表格?
- 10. 如何正確添加項目到ObjectListView?
- 11. 從字符串列表中添加和刪除項目,只有在項目不存在的情況下才會添加
- 12. 如何在不做任何項目修改的情況下加速xcode構建?
- 13. 名稱「項目」不在當前情況下存在了forech
- 14. 只有在新屬性大於現有項目的情況下,DynamoDb纔會更新項目
- 15. SQLiteDatabase只有在不存在的情況下才會添加
- 16. 默認情況下,在項目
- 17. 在不改變所有項目的排名的情況下排列項目
- 18. 僅在Access 2007中不存在的情況下添加記錄
- 19. 在不添加引用的情況下調用另一個項目的類
- 20. ObjectListView項目不可見?
- 21. DynamoDB:僅當它存在時才更新的項目
- 22. 在不使用數據存儲的情況下在組合框中動態添加新項目
- 23. Maven項目中的Checkstyle。在違規情況下不能失敗項目
- 24. Gradle:在不知道其子項目細節的情況下包含項目
- 25. 如何在不使用Eclipse的情況下手動將項目添加到Eclipse
- 26. 在不使用XCode的情況下將PhoneGap添加到Xcode項目中
- 27. 在不添加配置文件的情況下提交/推送項目更改
- 28. 在不使迭代器無效的情況下添加和刪除項目
- 29. 如何在不檢出項目的情況下將文件添加到SVN
- 30. QTreeWidget兩次添加相同的項目