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)それ以降は選択されたアイテムが存在しないので、削除を2回実行して2つの行を順に削除することはできません。
あなたの答えのアイデアは私が探しているものだと思いますので、私は受け入れています。どのようなアイデアが、なぜ "変更されました"イベントの代わりに "currentItemChanging"イベントのように振る舞いますか?コード内で発生すると、クリックした行は「現在」ですが、current.isSelected()はFalseです。 previous.isSelected()はTrueですが。私は別の行をクリックすることができ、常に同じです、previous.isSelected()はTrueですが、現在はありません。 – Mike
@Mike。私は別の方法で私の答えを更新しました。 – ekhumoro
助けてくれてありがとう。私はちょうど間違った信号を使っていたと思う。この場合、選択されていない最初の行をクリックすると、selectedItems()は0が返されます。これは、行が選択される前に発生したかのようです。後続の行の変更は、値を持つselectedItems()を示しました。私はitemSelectionChangedへの信号を変更しました。そして、それは期待通りに稼働しています。これが発生すると、selectedItems()は私が期待するものを表します。助けてくれてありがとう! – Mike