@Carver182
инженер-программист

Как добавить несколько QTablewidget в QSrollArea?

При добавлении нескольких 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())
  • Вопрос задан
  • 190 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы