Мне нужно, что бы названия столбцов отображались не цифрами(1, 2, 3), а названиями, которые видны в базе данных SQliteStudio.Элемент 'Table Widget'
Так выглядит таблица в SQLiteStudio:
Так выглядит таблица в моем приложении:
Фрагмент кода:
def run(self):
cur = self.con.cursor()
if self.lineEdit.text():
result = cur.execute(f"""{self.lineEdit.text()}""").fetchall()
else:
result = cur.execute(
f"""SELECT * FROM Core"""
).fetchall()
self.tableWidget.setRowCount(len(result))
self.tableWidget.setColumnCount(len(result[0]))
for i, elem in enumerate(result):
for j, val in enumerate(elem):
self.tableWidget.setItem(i, j, QTableWidgetItem(str(val)))
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
void QTableWidget::setHorizontalHeaderLabels(const QStringList &labels)
Устанавливает метки горизонтального заголовка с помощью labels.
import sys
from PyQt5.Qt import *
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.tableWidget = QTableWidget()
self.tableWidget.setAlternatingRowColors(True)
self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.button = QPushButton("Run")
self.button.clicked.connect(self.run)
self.layout = QVBoxLayout(self)
self.layout.addWidget(self.tableWidget)
self.layout.addWidget(self.button)
def run(self):
result = [
(1, 'АСВ-5308 1-46 см', '20.09.2021'),
(2, 'АСВ-53 1-46 см', '22.09.2022'),
(3, 'АСВ-535 1-46 см', '17.09.2021')
]
self.tableWidget.setRowCount(len(result))
self.tableWidget.setColumnCount(len(result[0]))
for i, elem in enumerate(result):
for j, val in enumerate(elem):
self.tableWidget.setItem(i, j, QTableWidgetItem(str(val)))
self.tableWidget.setHorizontalHeaderLabels( # +++
['id', 'number', 'date']) # +++
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyApp()
w.resize(400, 300)
w.show()
sys.exit(app.exec_())


