PySide6のリストビューのサンプル【QListView】

python コンピュータ
python

QListViewのサンプルスクリプトです。

import sys
from PySide6.QtWidgets import QApplication,QMainWindow,QVBoxLayout, QWidget,QHBoxLayout
from PySide6.QtWidgets import QFileSystemModel
from PySide6.QtWidgets import QListView
PATH = 'D:/'

# メインウィンドウ
class MyMainWindow(QMainWindow):

    # コンストラクタ
    def __init__(self):
        # スーパー(親)クラスのコンストラクタの呼び出し
        super().__init__()

        self.model = QFileSystemModel()
        self.model.setRootPath(PATH)

        # リストビュー
        list_view = QListView()
        list_view.setModel(self.model)
        list_view.setRootIndex(self.model.index(PATH))

        # 選択されたときのシグナルをメソッドに接続
        selection_model = list_view.selectionModel()  # 選択モデルを取得
        selection_model.currentChanged.connect(self.item_selected)

        # ダブルクリックされたときのシグナルをメソッドに接続
        list_view.doubleClicked.connect(self.item_double_clicked)

        # レイアウトを作成
        layout = QVBoxLayout()
        layout.addWidget(list_view)

        # レイアウトをQWidgetに設定し、それをCentralWidgetにする
        central_widget = QWidget()
        central_widget.setLayout(layout)
        self.setCentralWidget(central_widget)
    
    def item_selected(self, current, previous):
        if current.isValid(): # 項目が有効かチェック
            item_text = self.model.data(current, role=0) # 選択された項目のテキストを取得
            print(f"選択された項目: {item_text}")
        else:
            print("項目が選択されていません")
    
    def item_double_clicked(self, index):
        if index.isValid(): # 項目が有効かチェック
            item_text = self.model.data(index, role=0)  # ダブルクリックされた項目のテキストを取得
            print(f"ダブルクリックされた項目: {item_text}")
    
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyMainWindow()
    window.show()
    sys.exit(app.exec())

実行するとリストビューが表示され、項目のクリックまたはダブルクリックするとコンソールに文字が表示されます。

起動した段階で1行目が選択されたシグナルが発生してるようで自動的にコンソールに文字列が表示されました。

QFileSystemModelが大変興味深いですが其方はオイオイ調べたいと思います。

コメント