Запретить изменение размера колонок Qtablewidget
Я хочу запретить изменение размера колонок в tablewidget,
также я не нашел ответа на то, как убрать некрасивую квадратную рамочку вокруг объекта tablewidget.
Как это сделать?
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(483, 180)
MainWindow.setMinimumSize(QtCore.QSize(483, 0))
MainWindow.setMaximumSize(QtCore.QSize(483, 22222))
MainWindow.setStyleSheet("")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setStyleSheet("QAbstractItemView {\n"
"outline: 0px;\n"
"}")
self.centralwidget.setObjectName("centralwidget")
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.setGeometry(QtCore.QRect(0, 0, 485, 181))
self.tableWidget.setStyleSheet("")
self.tableWidget.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
self.tableWidget.setHorizontalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
self.tableWidget.setShowGrid(True)
self.tableWidget.setWordWrap(True)
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(3)
self.tableWidget.setRowCount(7)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(4, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(5, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(6, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(2, item)
self.tableWidget.horizontalHeader().setVisible(True)
self.tableWidget.horizontalHeader().setCascadingSectionResizes(False)
self.tableWidget.horizontalHeader().setHighlightSections(False)
self.tableWidget.horizontalHeader().setSortIndicatorShown(False)
self.tableWidget.horizontalHeader().setStretchLastSection(True)
self.tableWidget.verticalHeader().setVisible(True)
self.tableWidget.verticalHeader().setCascadingSectionResizes(False)
self.tableWidget.verticalHeader().setHighlightSections(True)
self.tableWidget.verticalHeader().setSortIndicatorShown(False)
self.tableWidget.verticalHeader().setStretchLastSection(False)
self.tableWidget.raise_()
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Settings"))
item = self.tableWidget.verticalHeaderItem(0)
item.setText(_translate("MainWindow", "1."))
item = self.tableWidget.verticalHeaderItem(1)
item.setText(_translate("MainWindow", "3."))
item = self.tableWidget.verticalHeaderItem(2)
item.setText(_translate("MainWindow", "2."))
item = self.tableWidget.verticalHeaderItem(3)
item.setText(_translate("MainWindow", "4."))
item = self.tableWidget.verticalHeaderItem(4)
item.setText(_translate("MainWindow", "5."))
item = self.tableWidget.verticalHeaderItem(5)
item.setText(_translate("MainWindow", "6."))
item = self.tableWidget.verticalHeaderItem(6)
item.setText(_translate("MainWindow", "7."))
item = self.tableWidget.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "1"))
item = self.tableWidget.horizontalHeaderItem(1)
item.setText(_translate("MainWindow", "2"))
item = self.tableWidget.horizontalHeaderItem(2)
item.setText(_translate("MainWindow", "3"))
class ExampleApp(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
if __name__=="__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
window = ExampleApp()
window.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
void QHeaderView::setSectionResizeMode(QHeaderView::ResizeMode mode)
Устанавливает ограничения на изменение размера заголовка для тех, которые описаны в данном режиме.
- Попробуйте установит
app.setStyle('Fusion')
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(483, 180)
MainWindow.setMinimumSize(QtCore.QSize(483, 0))
MainWindow.setMaximumSize(QtCore.QSize(483, 22222))
MainWindow.setStyleSheet("")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setStyleSheet("QAbstractItemView {\n"
"outline: 0px;\n"
"}")
self.centralwidget.setObjectName("centralwidget")
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.setGeometry(QtCore.QRect(0, 0, 485, 181))
self.tableWidget.setStyleSheet("")
self.tableWidget.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
self.tableWidget.setHorizontalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
self.tableWidget.setShowGrid(True)
self.tableWidget.setWordWrap(True)
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(3)
self.tableWidget.setRowCount(7)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(4, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(5, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(6, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(2, item)
self.tableWidget.horizontalHeader().setVisible(True)
self.tableWidget.horizontalHeader().setCascadingSectionResizes(False)
self.tableWidget.horizontalHeader().setHighlightSections(False)
self.tableWidget.horizontalHeader().setSortIndicatorShown(False)
self.tableWidget.horizontalHeader().setStretchLastSection(True)
self.tableWidget.verticalHeader().setVisible(True)
self.tableWidget.verticalHeader().setCascadingSectionResizes(False)
self.tableWidget.verticalHeader().setHighlightSections(True)
self.tableWidget.verticalHeader().setSortIndicatorShown(False)
self.tableWidget.verticalHeader().setStretchLastSection(False)
self.tableWidget.raise_()
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Settings"))
item = self.tableWidget.verticalHeaderItem(0)
item.setText(_translate("MainWindow", "1."))
item = self.tableWidget.verticalHeaderItem(1)
item.setText(_translate("MainWindow", "3."))
item = self.tableWidget.verticalHeaderItem(2)
item.setText(_translate("MainWindow", "2."))
item = self.tableWidget.verticalHeaderItem(3)
item.setText(_translate("MainWindow", "4."))
item = self.tableWidget.verticalHeaderItem(4)
item.setText(_translate("MainWindow", "5."))
item = self.tableWidget.verticalHeaderItem(5)
item.setText(_translate("MainWindow", "6."))
item = self.tableWidget.verticalHeaderItem(6)
item.setText(_translate("MainWindow", "7."))
item = self.tableWidget.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "1"))
item = self.tableWidget.horizontalHeaderItem(1)
item.setText(_translate("MainWindow", "2"))
item = self.tableWidget.horizontalHeaderItem(2)
item.setText(_translate("MainWindow", "3"))
class ExampleApp(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.tableWidget.setItem(0, 0, QtWidgets.QTableWidgetItem('Hello'))
self.tableWidget.setItem(0, 1, QtWidgets.QTableWidgetItem('World'))
self.tableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
self.tableWidget.horizontalHeader().setSectionResizeMode(0, QtWidgets.QHeaderView.ResizeToContents)
self.tableWidget.horizontalHeader().setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
if __name__=="__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
app.setStyle('Fusion') # <---
window = ExampleApp()
window.show()
sys.exit(app.exec_())

