2022-09-15

PySide6: QTableView と QStandardItemModel

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

ちょっとしたテーブルを作りたいとき、モデルに QStandardItemModel を使っていますが、必要になる度に調べ直しています😅。必要になった時に備忘録的にすぐ参照できるようにと、簡単なサンプルを作りました。これと言って大したサンプルではありません。

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

Fedora Linux 37 (Server Edition Prerelease) x86_64
python3 python3.10-3.10.7-1.fc37.x86_64
PySide6 6.3.2
qt_tableview_standarditemmodel.py
import sys
from PySide6.QtGui import (
QStandardItem,
QStandardItemModel,
Qt,
)
from PySide6.QtWidgets import (
QApplication,
QHeaderView,
QMainWindow,
QTableView,
)
class Example(QMainWindow):
pref_data: list = [
['茨城県', '310-8555 水戸市笠原町 978-6'],
['栃木県', '320-8501 宇都宮市塙田 1-1-20'],
['群馬県', '371-8570 前橋市大手町 1-1-1'],
['埼玉県', '330-9301 さいたま市浦和区高砂 3-15-1'],
['千葉県', '260-8667 千葉市中央区市場町 1-1'],
['東京都', '163-8001 新宿区西新宿 2-8-1'],
['神奈川県', '231-8588 横浜市中区日本大通 1'],
['新潟県', '950-8570 新潟県新潟市中央区新光町4-1'],
['富山県', '930-8501 富山県富山市新総曲輪1-7'],
['石川県', '920-8580 石川県金沢市鞍月1-1'],
]
header: list = ['都道府県', '県庁所在地']
def __init__(self):
super().__init__()
self.init_ui()
self.setWindowTitle('TableView')
def init_ui(self):
# table
table = QTableView()
self.setCentralWidget(table)
table.setWordWrap(False)
table.setCornerButtonEnabled(True)
table.setStyleSheet(
'QTableCornerButton::section {border:1px outset #ccc;}'
)
table.horizontalHeader().setSectionResizeMode(
QHeaderView.ResizeToContents
)
table.verticalHeader().setDefaultAlignment(Qt.AlignRight)
table.verticalHeader().setSectionResizeMode(
QHeaderView.ResizeToContents
)
# model for table
model = QStandardItemModel()
table.setModel(model)
model.setHorizontalHeaderLabels(self.header)
for info_pref in self.pref_data:
list_row = [QStandardItem(info) for info in info_pref]
model.appendRow(list_row)
def main():
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec())
if __name__ == "__main__":
main()
qt_tableview_standarditemmodel.py の実行例

参考サイト

  1. QTableView — Qt for Python
  2. QStandardItemModel — Qt for Python
  3. QStandardItem — Qt for Python

 

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



0 件のコメント: