Как заставить PyQt5 GUI работать на разном разрешении экрана с автоматическим изменением размера? - PullRequest
0 голосов
/ 27 марта 2020

Я создал приложение GUI, используя PyQt5 Designer. У меня проблемы, когда я пытаюсь получить доступ к этому gui в более низком разрешении. Я искал разные темы на inte rnet, но у меня ничего не получалось. Я публикую минимальный код и фрагменты того, как GUI реагирует на различное разрешение.

Я также пытался использовать сетку, но с групповым блоком вокруг его не совсем выполнимого варианта. Есть ли другой способ исправить это?

Фрагмент при открытии в 1366X768:

Фрагмент при открытии в 1920X1080:

Код, сгенерированный UI Designer:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_mainwindow(object):
    def setupUi(self, mainwindow):
        mainwindow.setObjectName("mainwindow")
        mainwindow.resize(1913, 994)
        mainwindow.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        mainwindow.setWindowTitle("")
        self.centralwidget = QtWidgets.QWidget(mainwindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.frame = QtWidgets.QFrame(self.centralwidget)
        self.frame.setEnabled(True)
        self.frame.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        self.frame.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
        self.frame.setAutoFillBackground(False)
        self.frame.setStyleSheet("QFrame{\n"
"background-color: rgb(255, 255, 255);\n"
"    font: 10pt \"Segoe UI\";\n"
"}\n"
"QGroupBox{\n"
"    font: 10pt \"Segoe UI\";\n"
"}\n"
"QPushButton{\n"
"color: rgb(0, 0, 0);\n"
"    font: 10pt \"Segoe UI\";\n"
"}\n"
"QLineEdit{\n"
"    font: 10pt \"Segoe UI\";\n"
"    color: rgb(0, 0, 0);\n"
"}\n"
"QComboBox{\n"
"    font: 10pt \"Segoe UI\";\n"
"}\n"
"QTableWidget{\n"
"    font: 10pt \"Segoe UI\";\n"
"}")
        self.frame.setFrameShape(QtWidgets.QFrame.Box)
        self.frame.setFrameShadow(QtWidgets.QFrame.Plain)
        self.frame.setLineWidth(1)
        self.frame.setObjectName("frame")
        self.groupBox = QtWidgets.QGroupBox(self.frame)
        self.groupBox.setGeometry(QtCore.QRect(10, 10, 191, 51))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.groupBox.setFont(font)
        self.groupBox.setObjectName("groupBox")
        self.combo = QtWidgets.QComboBox(self.groupBox)
        self.combo.setGeometry(QtCore.QRect(10, 20, 171, 21))
        self.combo.setObjectName("combo")
        self.groupBox_3 = QtWidgets.QGroupBox(self.frame)
        self.groupBox_3.setGeometry(QtCore.QRect(10, 450, 191, 501))
        self.groupBox_3.setTitle("")
        self.groupBox_3.setObjectName("groupBox_3")
        self.pb7 = QtWidgets.QPushButton(self.groupBox_3)
        self.pb7.setGeometry(QtCore.QRect(10, 350, 171, 31))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.pb7.setFont(font)
        self.pb7.setObjectName("pb7")
        self.pb8 = QtWidgets.QPushButton(self.groupBox_3)
        self.pb8.setGeometry(QtCore.QRect(10, 390, 171, 31))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.pb8.setFont(font)
        self.pb8.setObjectName("pb8")
        self.pb9 = QtWidgets.QPushButton(self.groupBox_3)
        self.pb9.setGeometry(QtCore.QRect(10, 430, 171, 31))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.pb9.setFont(font)
        self.pb9.setObjectName("pb9")
        self.pb6 = QtWidgets.QPushButton(self.groupBox_3)
        self.pb6.setGeometry(QtCore.QRect(10, 310, 171, 31))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.pb6.setFont(font)
        self.pb6.setObjectName("pb6")
        self.pbOutputFolder = QtWidgets.QPushButton(self.groupBox_3)
        self.pbOutputFolder.setGeometry(QtCore.QRect(10, 150, 171, 31))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.pbOutputFolder.setFont(font)
        self.pbOutputFolder.setObjectName("pbOutputFolder")
        self.pb10 = QtWidgets.QPushButton(self.groupBox_3)
        self.pb10.setGeometry(QtCore.QRect(10, 470, 171, 31))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.pb10.setFont(font)
        self.pb10.setObjectName("pb10")
        self.pb5 = QtWidgets.QPushButton(self.groupBox_3)
        self.pb5.setGeometry(QtCore.QRect(10, 270, 171, 31))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.pb5.setFont(font)
        self.pb5.setObjectName("pb5")
        self.OutputFlagsTable = QtWidgets.QTableWidget(self.groupBox_3)
        self.OutputFlagsTable.setGeometry(QtCore.QRect(10, 10, 171, 131))
        self.OutputFlagsTable.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.OutputFlagsTable.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.OutputFlagsTable.setAlternatingRowColors(True)
        self.OutputFlagsTable.setRowCount(5)
        self.OutputFlagsTable.setColumnCount(2)
        self.OutputFlagsTable.setObjectName("OutputFlagsTable")
        item = QtWidgets.QTableWidgetItem()
        self.OutputFlagsTable.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.OutputFlagsTable.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.OutputFlagsTable.setItem(1, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.OutputFlagsTable.setItem(2, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.OutputFlagsTable.setItem(2, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.OutputFlagsTable.setItem(3, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.OutputFlagsTable.setItem(3, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.OutputFlagsTable.setItem(4, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.OutputFlagsTable.setItem(4, 1, item)
        self.OutputFlagsTable.horizontalHeader().setVisible(False)
        self.OutputFlagsTable.horizontalHeader().setDefaultSectionSize(80)
        self.OutputFlagsTable.horizontalHeader().setStretchLastSection(True)
        self.OutputFlagsTable.verticalHeader().setVisible(False)
        self.OutputFlagsTable.verticalHeader().setDefaultSectionSize(25)
        self.OutputFlagsTable.verticalHeader().setStretchLastSection(False)
        self.lbOutputFolder = QtWidgets.QPlainTextEdit(self.groupBox_3)
        self.lbOutputFolder.setGeometry(QtCore.QRect(10, 180, 171, 91))
        self.lbOutputFolder.setReadOnly(True)
        self.lbOutputFolder.setObjectName("lbOutputFolder")
        self.groupBox_4 = QtWidgets.QGroupBox(self.frame)
        self.groupBox_4.setGeometry(QtCore.QRect(10, 60, 191, 81))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.groupBox_4.setFont(font)
        self.groupBox_4.setToolTip("")
        self.groupBox_4.setStyleSheet("")
        self.groupBox_4.setObjectName("groupBox_4")
        self.pb1 = QtWidgets.QPushButton(self.groupBox_4)
        self.pb1.setGeometry(QtCore.QRect(10, 40, 171, 31))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.pb1.setFont(font)
        self.pb1.setObjectName("pb1")
        self.lbRunDate = QtWidgets.QLabel(self.groupBox_4)
        self.lbRunDate.setGeometry(QtCore.QRect(30, 20, 131, 16))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.lbRunDate.setFont(font)
        self.lbRunDate.setText("")
        self.lbRunDate.setAlignment(QtCore.Qt.AlignCenter)
        self.lbRunDate.setObjectName("lbRunDate")
        self.tablewidget = QtWidgets.QTableWidget(self.frame)
        self.tablewidget.setGeometry(QtCore.QRect(210, 10, 1671, 931))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(9)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.tablewidget.setFont(font)
        self.tablewidget.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
        self.tablewidget.setStyleSheet("background-color: rgb(255, 255, 255);\n"
"font: 9pt \"Segoe UI\";\n"
"color: rgb(0, 0, 0);\n"
"border-color: rgb(0, 0, 0);\n"
"gridline-color: rgb(198, 198, 198);")
        self.tablewidget.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.tablewidget.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.tablewidget.setLineWidth(1)
        self.tablewidget.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
        self.tablewidget.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
        self.tablewidget.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
        self.tablewidget.setEditTriggers(QtWidgets.QAbstractItemView.AnyKeyPressed|QtWidgets.QAbstractItemView.DoubleClicked|QtWidgets.QAbstractItemView.EditKeyPressed|QtWidgets.QAbstractItemView.SelectedClicked)
        self.tablewidget.setDragDropMode(QtWidgets.QAbstractItemView.NoDragDrop)
        self.tablewidget.setAlternatingRowColors(False)
        self.tablewidget.setSelectionMode(QtWidgets.QAbstractItemView.ContiguousSelection)
        self.tablewidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectItems)
        self.tablewidget.setShowGrid(True)
        self.tablewidget.setRowCount(3)
        self.tablewidget.setColumnCount(31)
        self.tablewidget.setObjectName("tablewidget")
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignCenter)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        item.setFont(font)
        item.setFlags(QtCore.Qt.ItemIsEnabled)
        self.tablewidget.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        item.setFont(font)
        self.tablewidget.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignCenter)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        item.setFont(font)
        self.tablewidget.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        item.setFont(font)
        item = QtWidgets.QTableWidgetItem()
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        item.setFont(font)
        self.tablewidget.horizontalHeader().setVisible(False)
        self.tablewidget.horizontalHeader().setDefaultSectionSize(46)
        self.tablewidget.horizontalHeader().setStretchLastSection(True)
        self.tablewidget.verticalHeader().setVisible(False)
        self.tablewidget.verticalHeader().setDefaultSectionSize(20)
        self.groupBox_2 = QtWidgets.QGroupBox(self.frame)
        self.groupBox_2.setGeometry(QtCore.QRect(10, 140, 191, 51))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.groupBox_2.setFont(font)
        self.groupBox_2.setObjectName("groupBox_2")
        self.lb1 = QtWidgets.QLineEdit(self.groupBox_2)
        self.lb1.setGeometry(QtCore.QRect(10, 20, 171, 21))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.lb1.setFont(font)
        self.lb1.setStyleSheet("")
        self.lb1.setText("")
        self.lb1.setAlignment(QtCore.Qt.AlignCenter)
        self.lb1.setObjectName("lb1")
        self.groupBox_5 = QtWidgets.QGroupBox(self.frame)
        self.groupBox_5.setGeometry(QtCore.QRect(10, 290, 191, 61))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.groupBox_5.setFont(font)
        self.groupBox_5.setObjectName("groupBox_5")
        self.lb4 = QtWidgets.QLineEdit(self.groupBox_5)
        self.lb4.setGeometry(QtCore.QRect(10, 20, 81, 31))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.lb4.setFont(font)
        self.lb4.setStyleSheet("")
        self.lb4.setText("")
        self.lb4.setAlignment(QtCore.Qt.AlignCenter)
        self.lb4.setObjectName("lb4")
        self.pb2 = QtWidgets.QPushButton(self.groupBox_5)
        self.pb2.setGeometry(QtCore.QRect(100, 20, 81, 31))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.pb2.setFont(font)
        self.pb2.setObjectName("pb2")
        self.groupBox_6 = QtWidgets.QGroupBox(self.frame)
        self.groupBox_6.setGeometry(QtCore.QRect(10, 350, 191, 61))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.groupBox_6.setFont(font)
        self.groupBox_6.setObjectName("groupBox_6")
        self.pb3 = QtWidgets.QPushButton(self.groupBox_6)
        self.pb3.setGeometry(QtCore.QRect(10, 20, 171, 31))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.pb3.setFont(font)
        self.pb3.setObjectName("pb3")
        self.groupBox_7 = QtWidgets.QGroupBox(self.frame)
        self.groupBox_7.setGeometry(QtCore.QRect(10, 190, 191, 51))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.groupBox_7.setFont(font)
        self.groupBox_7.setObjectName("groupBox_7")
        self.lb2 = QtWidgets.QLineEdit(self.groupBox_7)
        self.lb2.setGeometry(QtCore.QRect(10, 20, 171, 21))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.lb2.setFont(font)
        self.lb2.setStyleSheet("")
        self.lb2.setText("")
        self.lb2.setAlignment(QtCore.Qt.AlignCenter)
        self.lb2.setObjectName("lb2")
        self.groupBox_8 = QtWidgets.QGroupBox(self.frame)
        self.groupBox_8.setGeometry(QtCore.QRect(10, 240, 191, 51))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.groupBox_8.setFont(font)
        self.groupBox_8.setObjectName("groupBox_8")
        self.lb3 = QtWidgets.QLineEdit(self.groupBox_8)
        self.lb3.setGeometry(QtCore.QRect(10, 20, 171, 21))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.lb3.setFont(font)
        self.lb3.setStyleSheet("")
        self.lb3.setText("")
        self.lb3.setAlignment(QtCore.Qt.AlignCenter)
        self.lb3.setObjectName("lb3")
        self.lbMaxBid = QtWidgets.QLabel(self.frame)
        self.lbMaxBid.setGeometry(QtCore.QRect(10, 410, 191, 21))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.lbMaxBid.setFont(font)
        self.lbMaxBid.setStyleSheet("background-color: rgb(170, 255, 255);")
        self.lbMaxBid.setObjectName("lbMaxBid")
        self.lbMinBid = QtWidgets.QLabel(self.frame)
        self.lbMinBid.setGeometry(QtCore.QRect(10, 430, 191, 20))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.lbMinBid.setFont(font)
        self.lbMinBid.setStyleSheet("background-color: rgb(170, 255, 255);")
        self.lbMinBid.setObjectName("lbMinBid")
        self.groupBox_4.raise_()
        self.groupBox.raise_()
        self.groupBox_3.raise_()
        self.tablewidget.raise_()
        self.groupBox_2.raise_()
        self.groupBox_5.raise_()
        self.groupBox_6.raise_()
        self.groupBox_7.raise_()
        self.groupBox_8.raise_()
        self.lbMaxBid.raise_()
        self.lbMinBid.raise_()
        self.horizontalLayout.addWidget(self.frame)
        mainwindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(mainwindow)
        self.statusbar.setObjectName("statusbar")
        mainwindow.setStatusBar(self.statusbar)

        self.retranslateUi(mainwindow)
        QtCore.QMetaObject.connectSlotsByName(mainwindow)

    def retranslateUi(self, mainwindow):
        _translate = QtCore.QCoreApplication.translate
        self.groupBox.setTitle(_translate("mainwindow", "A"))
        self.pb7.setText(_translate("mainwindow", "U"))
        self.pb8.setText(_translate("mainwindow", "V"))
        self.pb9.setText(_translate("mainwindow", "W"))
        self.pb6.setText(_translate("mainwindow", "T"))
        self.pbOutputFolder.setText(_translate("mainwindow", "Z"))
        self.pb10.setText(_translate("mainwindow", "X"))
        self.pb5.setText(_translate("mainwindow", "S"))
        __sortingEnabled = self.OutputFlagsTable.isSortingEnabled()
        self.OutputFlagsTable.setSortingEnabled(False)
        item = self.OutputFlagsTable.item(0, 1)
        item.setText(_translate("mainwindow", "a"))
        item = self.OutputFlagsTable.item(1, 1)
        item.setText(_translate("mainwindow", "b"))
        item = self.OutputFlagsTable.item(2, 1)
        item.setText(_translate("mainwindow", "c"))
        item = self.OutputFlagsTable.item(3, 1)
        item.setText(_translate("mainwindow", "d"))
        item = self.OutputFlagsTable.item(4, 1)
        item.setText(_translate("mainwindow", "e"))
        self.OutputFlagsTable.setSortingEnabled(__sortingEnabled)
        self.groupBox_4.setTitle(_translate("mainwindow", "B"))
        self.pb1.setText(_translate("mainwindow", "Select Date"))
        self.tablewidget.setSortingEnabled(False)
        __sortingEnabled = self.tablewidget.isSortingEnabled()
        self.tablewidget.setSortingEnabled(False)
        item = self.tablewidget.item(0, 0)
        item.setText(_translate("mainwindow", "A"))
        item = self.tablewidget.item(1, 0)
        item.setText(_translate("mainwindow", "B"))
        item = self.tablewidget.item(2, 0)
        item.setText(_translate("mainwindow", "C"))
        item = self.tablewidget.item(2, 7)
        item.setText(_translate("mainwindow", "1"))
        item = self.tablewidget.item(2, 8)
        item.setText(_translate("mainwindow", "2"))
        item = self.tablewidget.item(2, 29)
        item.setText(_translate("mainwindow", "23"))
        item = self.tablewidget.item(2, 30)
        item.setText(_translate("mainwindow", "24"))
        self.tablewidget.setSortingEnabled(__sortingEnabled)
        self.groupBox_2.setTitle(_translate("mainwindow", "C"))
        self.groupBox_5.setTitle(_translate("mainwindow", "F"))
        self.pb2.setText(_translate("mainwindow", "ADD"))
        self.groupBox_6.setTitle(_translate("mainwindow", "G"))
        self.pb3.setText(_translate("mainwindow", "Q"))
        self.groupBox_7.setTitle(_translate("mainwindow", "D"))
        self.groupBox_8.setTitle(_translate("mainwindow", "E"))
        self.lbMaxBid.setText(_translate("mainwindow", "   Max Bid : 0.0"))
        self.lbMinBid.setText(_translate("mainwindow", "   Min Bid  : 0.0"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    mainwindow = QtWidgets.QMainWindow()
    ui = Ui_mainwindow()
    ui.setupUi(mainwindow)
    mainwindow.show()
    sys.exit(app.exec_())

Второй фрагмент - это то, что я хотел бы изменить автоматически при открытии в любом разрешении. Заранее спасибо.

...