2016-06-16 8 views
0

Ich habe ein Objekt vom Typ QListWidget, wo der Benutzer 0 oder mehr Elemente auswählen kann.PyQt - löst ein Ereignis aus, wenn in einem QListWidget nichts ausgewählt ist?

Wenn nichts ausgewählt ist, wie kann ich ein Ereignis auslösen, das eine Funktion aufrufen würde? Ich weiß, dass Sie zu einem bestimmten Punkt zu klicken, erkennen können mithilfe:

QListWidget.itemClicked.connect(self.item_click) 

Gibt es etwas ähnliches für, wenn gar nichts ausgewählt? (oder mit anderen Worten, das QListWidget ist klar)

Vielen Dank!

Antwort

1

Im Allgemeinen würden Sie mit dem Signal itemSelectionChanged verbinden und dann prüfen, ob etwas ausgewählt ist.

self.listwidget.itemSelectionChanged.connect(self.on_selection_changed) 

def on_selection_changed(self): 
    if not self.listwidget.selectedItems(): 
     # Do Stuff Here 
     self.nothing_selected_function() 

Aber das wird nur Ereignisse fangen, wo etwas ausgewählt wurde und dann das alles Benutzer abgewählt. Wenn nichts ausgewählt wurde, wird dieses Signal nicht ausgelöst (wie beim ersten Erstellen der Liste und nichts ist ausgewählt). In diesem Fall müssten Sie den Slot manuell aufrufen.

self.listwidget = ... # Code that builds and populates list widget 
# Call this manually the first time. 
self.on_selection_changed() 

Aber ein Teil Ihrer Frage ist mehrdeutig. Warum möchten Sie wissen, wenn etwas "nicht ausgewählt" ist? Was ist, wenn ein neues Objekt zur Liste hinzugefügt wird? Sollte es Ihre "nicht ausgewählt" -Funktion auslösen, da sich die Liste geändert hat, aber immer noch nichts ausgewählt ist?

+0

Wenn kein Element ausgewählt ist, möchte ich einige der Schaltflächen und Textfelder deaktivieren. Wenn ein Benutzer der Liste ein neues Element hinzufügt, wird dieses Element automatisch als das ausgewählte Element festgelegt. – Gambit2007

Verwandte Themen