2022-09-01

PySide6: チェックボックス付きの QTableView

PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。配布ライセンスは LGPL で公開されています。最新のバージョンは Qt6 に対応した PySide6(記事執筆時点で 6.3.1)です。

文字列とチェックボックスをマトリックス状に配置したウィジェットが必要になり、出来合いの QStandardItemModel を使ってチェックボックスを QTableView のセルに表示するサンプルを作ってみました。

下記の OS 環境で動作確認をしました。

Fedora Linux 36 x86_64
python3 3.10.6-1.fc36.x86_64
PySide6 6.3.1
qt_tableview_checkbox.py
#!/usr/bin/env python
# coding: utf-8
import sys
from PySide6.QtGui import (
QStandardItem,
QStandardItemModel, Qt,
)
from PySide6.QtWidgets import (
QApplication,
QMainWindow,
QTableView, QHeaderView,
)
class Example(QMainWindow):
list_label = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
def __init__(self):
super().__init__()
self.init_ui()
self.setWindowTitle('TableView with CheckBox')
def init_ui(self):
"""
initialize UI
"""
tblview = QTableView()
tblview.horizontalHeader().setSectionResizeMode(
QHeaderView.ResizeToContents
)
model = QStandardItemModel()
model.itemChanged.connect(self.on_check_item)
tblview.setModel(model)
self.setCentralWidget(tblview)
for row in range(len(self.list_label)):
list_row = list()
for column in range(10):
item = QStandardItem()
if column == 0:
item.setText(self.list_label[row])
else:
item.setCheckable(True)
item.setCheckState(Qt.CheckState.Checked)
item.setEditable(False)
list_row.append(item)
model.appendRow(list_row)
def on_check_item(self, item: QStandardItem):
"""
on_check_item
examine check status
"""
if item.isCheckable():
row = item.row()
col = item.column()
if item.checkState() == Qt.CheckState.Checked:
msg = 'checked'
else:
msg = 'unchecked'
print('(%d, %d) -> %s' % (row, col, msg))
def main():
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec())
if __name__ == "__main__":
main()
qt_tableview_checkbox.py の実行例

チェックを外すと下記のように出力されます。

(1, 3) -> unchecked
(2, 6) -> unchecked
(3, 4) -> unchecked

参考サイト

  1. QTableView — Qt for Python
  2. QStandardItemModel — Qt for Python
  3. QStandardItem — Qt for Python
  4. bitWalk's: PySide6: チェックボックス付きの QTreeView [2022-03-24]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村



0 件のコメント: