我有一個使用PySide以Python編寫的應用程序,UI是使用QT Designer創建的。在Python/PySide中清除選定的列表項(因此沒有選定的列表項)
我在窗口中有一個列表,其中有一組項目。當應用程序加載時,它似乎抓住列表中的最後一項(即使列表中沒有「突出顯示」的行)。如果我打破並檢查當時是否有選定的項目,我會得到列表中的最後一個項目。
我有這樣的代碼:
@QtCore.Slot(QTreeWidgetItem,QTreeWidgetItem)
def on_list_currentItemChanged(self,current=None,previous=None):
if current:
self.ui.actionDelete_Task.setEnabled(True)
else:
self.ui.actionDelete_Task.setEnabled(False)
哪個確定是否存在選擇的當前項目。因此,在初始加載時,我希望當前爲空,但不是,它指向列表中的最後一個項目,即使沒有選擇項目。
有什麼,我失蹤?或者,或者,我如何告訴列表沒有選定的行/取消選擇所有行? (a)當表單加載並且列表最初顯示時沒有選定的項目時,刪除按鈕被禁用,甚至(b)如果有人應該通過這個刪除項目行動後,將不會有選定的項目(所以他們不能僅僅擊中刪除兩次並按順序刪除兩行)。
我認爲你的答案的想法是我正在尋找的,所以我接受。儘管爲什麼它會像「currentItemChanging」事件而不是「Changed」事件一樣表達任何想法?當它在我的代碼中觸發時,我點擊的那一行是「當前」,但是current.isSelected()是False。 previous.isSelected()雖然是True。我可以點擊不同的行,它總是相同的,previous.isSelected()是True,但不是最新的。 – Mike
@Mike。我用另一種方法更新了我的答案。 – ekhumoro
感謝您的幫助。我想我只是使用了錯誤的信號。在這種情況下,在沒有選中之後單擊第一行時,selectedItems()仍然返回0,就好像在行被選中之前觸發一樣。後續行更改顯示selectedItems()具有值。我將信號更改爲itemSelectionChanged,現在它按預期啓動並運行。當這種情況發生時,selectedItems()代表我期望的結果。非常感謝你的幫助! – Mike