1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
from PySide6.QtWidgets import (QApplication, QHeaderView, QHBoxLayout,
QMainWindow, QTableWidget, QTableWidgetItem,
QWidget)
class Widget(QWidget):
def __init__(self):
super().__init__()
self.items = 0
# Example data
self._data = {"Water": 24.5, "Electricity": 55.1, "Rent": 850.0,
"Supermarket": 230.4, "Internet": 29.99, "Bars": 21.85,
"Public transportation": 60.0, "Coffee": 22.45, "Restaurants": 120}
# Left
self.table = QTableWidget()
self.table.setColumnCount(2)
self.table.setHorizontalHeaderLabels(["Description", "Price"])
self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
# QWidget Layout
self.layout = QHBoxLayout(self)
self.layout.addWidget(self.table)
# Fill example data
self.fill_table()
def fill_table(self, data=None):
data = self._data if not data else data
for desc, price in data.items():
self.table.insertRow(self.items)
self.table.setItem(self.items, 0, QTableWidgetItem(desc))
self.table.setItem(self.items, 1, QTableWidgetItem(str(price)))
self.items += 1
class MainWindow(QMainWindow):
def __init__(self, widget):
super().__init__()
self.setWindowTitle("Tutorial")
# Menu
self.menu = self.menuBar()
self.file_menu = self.menu.addMenu("File")
# Exit QAction
exit_action = self.file_menu.addAction("Exit", self.close)
exit_action.setShortcut("Ctrl+Q")
self.setCentralWidget(widget)
if __name__ == "__main__":
# Qt Application
app = QApplication(sys.argv)
# QWidget
widget = Widget()
# QMainWindow using QWidget as central widget
window = MainWindow(widget)
window.resize(800, 600)
window.show()
# Execute application
sys.exit(app.exec())
|