При добавлении нескольких QTablewidget в QSrollArea ожидалось что появятся полосы прокрутки у QSrollArea а QTablewidget'ы не сожмутся, но вместо этого сжимаются экземпляры QTablewidget и у них появляются полосы прокрутки у каждой. Как это исправить?
Вот минимальный код в котором повторяется ошибка:
скомпиленный main_window.iu:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1389, 955)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.scrollArea = QtWidgets.QScrollArea(self.centralwidget)
self.scrollArea.setGeometry(QtCore.QRect(10, 10, 451, 881))
self.scrollArea.setWidgetResizable(True)
self.scrollArea.setObjectName("scrollArea")
self.scrollAreaWidgetContents = QtWidgets.QWidget()
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 449, 879))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.verticalLayoutWidget = QtWidgets.QWidget(self.scrollAreaWidgetContents)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 20, 421, 851))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", " Sender"))
Основной файл:
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtCore import Qt
from main_window import Ui_MainWindow # импорт нашего сгенерированного файла
import sys
class MySender(QtWidgets.QMainWindow):
def __init__(self):
super(MySender, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
for i in range(7):
self.add_table_widget()
def add_table_widget(self):
self.rowNum = 7
# создаем QTableWidget
tableWidget = QtWidgets.QTableWidget(self)
tableWidget.setHorizontalHeaderLabels(["field","value","tuning"])
tableWidget.setColumnCount(3)
tableWidget.setRowCount(self.rowNum)
# формируем и добавляем элементы в QTableWidget
for n, signal in enumerate(['sig1','sig2','sig3','sig4','sig5','sig6','sig7']):
tableWidget.setItem(n,0,QtWidgets.QTableWidgetItem(signal))
qsignal_value = QtWidgets.QTableWidgetItem()
qsignal_value.setData(Qt.EditRole,0)
tableWidget.setItem(n,1,qsignal_value)
btn = QtWidgets.QPushButton(tableWidget)
btn.setText("tune")
tableWidget.setCellWidget(n, 2, btn)
tableWidget.resizeColumnsToContents()
self.ui.verticalLayout.addWidget(tableWidget)
app = QtWidgets.QApplication([])
application = MySender()
application.show()
sys.exit(app.exec())