Я использую QtableWidget из PyQt5 для отображения данных из базы данных.
Проблема : только в начале (когда я запускаю программу) ширина столбцов выглядит идеально, но когда я нажимаю кнопку для загрузки данных, размер одного из столбцов автоматически изменяется в соответствии с размером вывода (сокращается).
Перед нажатием кнопки refre sh
и
После нажатия кнопки refre sh
столбец с именем «Имя» сжимается.
Вот код, который я сделал с помощью дизайнера Pyqt5:
self.tableWidget.setRowCount(0)
for row_number,row_data in enumerate(cur):
self.tableWidget.insertRow(row_number)
for column_number,data in enumerate(row_data):
self.tableWidget.setItem(row_number,column_number,QtWidgets.QTableWidgetItem(str(data)))
self.tableWidget.resizeColumnToContents(1)
except Exception as e:
print(e)
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(624, 470)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.setGeometry(QtCore.QRect(0, 70, 623, 330))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.tableWidget.sizePolicy().hasHeightForWidth())
self.tableWidget.setSizePolicy(sizePolicy)
self.tableWidget.setStyleSheet("")
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(6)
self.tableWidget.setRowCount(0)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(4, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(5, item)
self.tableWidget.horizontalHeader().setStretchLastSection(False)
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(0, 0, 624, 51))
font = QtGui.QFont()
font.setFamily("Sylfaen")
font.setPointSize(18)
font.setBold(False)
font.setItalic(False)
font.setWeight(9)
self.label.setFont(font)
self.label.setObjectName("label")
self.refresh = QtWidgets.QPushButton(self.centralwidget)
self.refresh.setGeometry(QtCore.QRect(246, 411, 131, 31))
#button event
self.refresh.clicked.connect(self.display)
font = QtGui.QFont()
font.setPointSize(11)
self.refresh.setFont(font)
self.refresh.setObjectName("refresh")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
Я попробовал QSizePolicy, но, похоже, не сработало.