wx.ListCtrl Items deselktieren
Verfasst: Donnerstag 16. November 2006, 22:56
DESELECT, Liste, Event
Hallo!
Vielleicht weiß jemand da einen Rat:
Ich habe eine Klasse geschrieben, die von wx.ListCtrl erbt und auch solch eine Liste erzeugt. In dieser Klasse gibt es folgende Methode zum selektieren bestimmter Zeilen. Der Methode wird eine Liste voller Item-Nummern übergeben.
Wenn vor dem Aufruf der Methode zum Beispiel die Zeilen [0, 1] selektiert waren, ich die Liste aber mit self.DeleteAllItems() leere und frisch auffüllen lasse, dann liefert mir ein Aufruf der obigen Methode mit z.B. self.SelectItems([7, 8])
einen Zustand, wo die Zeilen [0, 1, 7, 8] selektiert sind. Wie kommt das? Ich habe die Liste doch geleert und dennoch merkt sie sich, was selektiert war?
In den Zeilen 14 und 15 hatte ich spaßenshalber mal versucht, sozusagen ein Event zum Deselektieren zu rufen. War aber zu erwarten, dass es dieses nicht gibt, wenn es nicht in den Docs aufgeführt wird.
Hoffe so eine umfangreichere Frage schreckt niemanden ab. Wenn ich das Problem nicht gelöst kriege, dann habe ich einen nicht vertretbaren Bug in meiner Listenbibliothek.
Grüße
Jamil
Hallo!
Vielleicht weiß jemand da einen Rat:
Ich habe eine Klasse geschrieben, die von wx.ListCtrl erbt und auch solch eine Liste erzeugt. In dieser Klasse gibt es folgende Methode zum selektieren bestimmter Zeilen. Der Methode wird eine Liste voller Item-Nummern übergeben.
Code: Alles auswählen
def SelectItems(self, items=[]):
"""items contains the index no. of rows to select."""
if items:
makeVisible = False
for item in range(self.GetItemCount()):
makeVisible = True
if item in items:
self.SetItemState(item, wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)
self.SetItemState(item, wx.LIST_STATE_FOCUSED, wx.LIST_STATE_FOCUSED)
else:
# following does not work :-(
# event = wx.ListEvent(wx.wx.EVT_LIST_ITEM_DESELECTED)
# self.GetEventHandler().ProcessEvent(event)
pass
if makeVisible:
# make top row of items to select visible
toselectItem = items[0]
if type(toselectItem) == type(1) and toselectItem < self.GetItemCount():
self.EnsureVisible(toselectItem)
self.SetSelectedItemsIdsAttributs()
self.SetFocus()
einen Zustand, wo die Zeilen [0, 1, 7, 8] selektiert sind. Wie kommt das? Ich habe die Liste doch geleert und dennoch merkt sie sich, was selektiert war?
In den Zeilen 14 und 15 hatte ich spaßenshalber mal versucht, sozusagen ein Event zum Deselektieren zu rufen. War aber zu erwarten, dass es dieses nicht gibt, wenn es nicht in den Docs aufgeführt wird.
Hoffe so eine umfangreichere Frage schreckt niemanden ab. Wenn ich das Problem nicht gelöst kriege, dann habe ich einen nicht vertretbaren Bug in meiner Listenbibliothek.
Grüße
Jamil