如何以相同的纵横比将对象的大小绑定到窗口的大小Qt Designer,我试图通过 来完成Layouts,但我无法将一个对象叠加在另一个对象上。
同样在代码本身中,我尝试请求当前窗口大小并根据屏幕大小与原始屏幕大小的变化来缩放对象,但是.setGeometry()无法在方法中输入实数,并且在四舍五入时混合了对象.
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
import os
class Ui_Enrollee(object):
def setupUi(self, Enrollee):
Enrollee.setObjectName('Enrollee')
Enrollee.resize(450, 800)
Enrollee.setWindowTitle(' ')
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(os.getcwd() + '\\other\\design\\icon.png'))
Enrollee.setWindowIcon(icon)
Enrollee.setStyleSheet('background-color: #ffffff')
self.WidgetsEnrollee = QtWidgets.QWidget(Enrollee)
self.WidgetsEnrollee.setObjectName('WidgetsEnrollee')
self.verticalScrollBar = QtWidgets.QScrollBar(self.WidgetsEnrollee)
self.verticalScrollBar.setGeometry(QtCore.QRect(430, 95, 20, 690))
self.verticalScrollBar.setStyleSheet('QScrollBar:vertical {\n'
' border-radius: 10;\n'
' border: 2px solid #3d3d3d;\n'
' background: #595959;\n'
'}\n'
'QScrollBar::handle:vertical {\n'
' border-radius: 8;\n'
' background: #ffffff;\n'
' min-width: 20px;\n'
'}\n'
'QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {\n'
' border: none;\n'
' background: none;\n'
'}\n'
'QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical{\n'
' background: none;\n'
'}')
self.verticalScrollBar.setOrientation(QtCore.Qt.Vertical)
self.verticalScrollBar.setObjectName('verticalScrollBar')
self.label = QtWidgets.QLabel(self.WidgetsEnrollee)
self.label.setGeometry(QtCore.QRect(45, 20, 360, 45))
self.label.setStyleSheet('background-color: #595959;\n'
'border-radius: 22;\n'
'color: #ffffff;')
self.label.setText('')
self.label.setObjectName('label')
self.ninth_grade = QtWidgets.QPushButton(self.WidgetsEnrollee)
self.ninth_grade.setGeometry(QtCore.QRect(45, 20, 180, 45))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.ninth_grade.setFont(font)
self.ninth_grade.setStyleSheet('background-color: #363636;\n'
'border-radius: 22;\n'
'color: #ffffff;\n'
'')
self.ninth_grade.setObjectName('ninth_grade')
self.eleventh_grade = QtWidgets.QPushButton(self.WidgetsEnrollee)
self.eleventh_grade.setGeometry(QtCore.QRect(225, 20, 180, 45))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.eleventh_grade.setFont(font)
self.eleventh_grade.setStyleSheet('background-color: #595959;\n'
'border-radius: 22;\n'
'color: #ffffff;')
self.eleventh_grade.setObjectName('eleventh_grade')
n = 1
self.frame = QtWidgets.QLabel(self.WidgetsEnrollee)
if 125 + 28 * (n - 1) > 745:
self.frame.setGeometry(QtCore.QRect(15, 95, 400, 125 + 28 * (n - 1) - 35))
else:
self.frame.setGeometry(QtCore.QRect(15, 95, 400, 690))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.frame.setFont(font)
self.frame.setStyleSheet('border-radius: 10;\n'
'border: 2px solid #3d3d3d;\n'
'color: #000000;')
self.frame.setText('')
self.frame.setIndent(10)
self.frame.setObjectName('frame')
self.math = QtWidgets.QLabel(self.WidgetsEnrollee)
self.math.setGeometry(QtCore.QRect(265, 85, 70, 30))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.math.setFont(font)
self.math.setStyleSheet('border-radius: 10;\n'
'border: 2px solid #3d3d3d;\n'
'color: #000000;')
self.math.setAlignment(QtCore.Qt.AlignCenter)
self.math.setIndent(0)
self.math.setObjectName('math')
self.ukrain = QtWidgets.QLabel(self.WidgetsEnrollee)
self.ukrain.setGeometry(QtCore.QRect(340, 85, 70, 30))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.ukrain.setFont(font)
self.ukrain.setStyleSheet('border-radius: 10;\n'
'border: 2px solid #3d3d3d;\n'
'color: #000000;')
self.ukrain.setAlignment(QtCore.Qt.AlignCenter)
self.ukrain.setIndent(0)
self.ukrain.setObjectName('ukrain')
for i in range(n):
self.name = QtWidgets.QLabel(self.WidgetsEnrollee)
self.name.setGeometry(QtCore.QRect(43, 125 + 28 * i, 222, 30))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.name.setFont(font)
self.name.setStyleSheet('border: 2px solid #3d3d3d;\n'
'color: #000000;')
self.name.setText('')
self.name.setIndent(10)
self.name.setObjectName('name')
self.grade_math = QtWidgets.QLabel(self.WidgetsEnrollee)
self.grade_math.setGeometry(QtCore.QRect(263, 125 + 28 * i, 77, 30))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.grade_math.setFont(font)
self.grade_math.setStyleSheet('border: 2px solid #3d3d3d;\n'
'color: #000000;')
self.grade_math.setText('')
self.grade_math.setIndent(10)
self.grade_math.setObjectName('grade_math')
self.grade_ukrain = QtWidgets.QLabel(self.WidgetsEnrollee)
self.grade_ukrain.setGeometry(QtCore.QRect(338, 125 + 28 * i, 77, 30))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.grade_ukrain.setFont(font)
self.grade_ukrain.setStyleSheet('border: 2px solid #3d3d3d;\n'
'color: #000000;')
self.grade_ukrain.setText('')
self.grade_ukrain.setIndent(10)
self.grade_ukrain.setObjectName('grade_ukrain')
self.num = QtWidgets.QLabel(self.WidgetsEnrollee)
self.num.setGeometry(QtCore.QRect(15, 125 + 28 * i, 30, 30))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.num.setFont(font)
self.num.setStyleSheet('border: 2px solid #3d3d3d;\n'
'color: #000000;')
self.num.setText('')
self.num.setIndent(10)
self.num.setObjectName('num')
Enrollee.setCentralWidget(self.WidgetsEnrollee)
self.retranslateUi(Enrollee)
QtCore.QMetaObject.connectSlotsByName(Enrollee)
def retranslateUi(self, Enrollee):
_translate = QtCore.QCoreApplication.translate
self.ninth_grade.setText(_translate('Enrollee', 'button 1'))
self.eleventh_grade.setText(_translate('Enrollee', 'button 2'))
self.math.setText(_translate('Enrollee', 'TEXT 1'))
self.ukrain.setText(_translate('Enrollee', 'TEXT 2'))
class MainWindow(QtWidgets.QMainWindow, Ui_Enrollee):
def __init__(self):
super().__init__()
self.setupUi(self)
self.bnts = QButtonGroup()
self.bnts.setExclusive(True)
self.bnts.addButton(self.eleventh_grade)
self.bnts.addButton(self.ninth_grade)
self.bnts.buttonClicked.connect(self.color_change)
self.color_change(self.ninth_grade)
def color_change(self, but):
but.setStyleSheet('background-color: #363636;\nborder-radius: 22;\ncolor: #ffffff;\n')
if but == self.eleventh_grade:
self.ninth_grade.setStyleSheet('background-color: #595959;\nborder-radius: 22;\ncolor: #ffffff;\n')
else:
self.eleventh_grade.setStyleSheet('background-color: #595959;\nborder-radius: 22;\ncolor: #ffffff;\n')
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
Window1 = MainWindow()
Window1.show()
sys.exit(app.exec_())
应用程序的 UI 模型可以在这里查看:ui 模型

我不知道您在循环中绘制什么样的矩形以及它们的用途。我改为插入
QTableWidget。跑:
并运行main.py
永远不要更改 Qt Designer 生成的代码。
创建另一个从相应小部件继承的类,并使用生成的类来填充它。
q1369532.ui
主文件