如何在 PyQt5 中将 Qframe 显示为实际大小?

How to display Qframe as actual size in PyQt5?

这是我的程序。我的要求:按照上述尺寸显示框架。但在我的代码中它占据了整个区域。如何解决?

import sys
from  PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class FrameExample(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Frame Example")
        self.setGeometry(100,100,1500,900)

        self.frame = QFrame()
        self.frame.resize(300, 300)
        self.frame.setStyleSheet("background-color:skyblue")

        self.frame1 = QFrame()
        self.frame1.setGeometry(QRect(10,10,600,600))
        self.frame1.resize(600,600)
        self.frame1.setStyleSheet("background-color:lightgreen")

        layout = QVBoxLayout()
        layout.addWidget(self.frame)
        layout.addWidget(self.frame1)
        self.setLayout(layout)

if __name__=="__main__":
    app = QApplication(sys.argv)
    countrywin =FrameExample()

    countrywin.show()
    sys.exit(app.exec_())

使用 resize() 您可以管理小部件的大小,但在设置布局后它将处理大小。一种可能的解决方案是使用 setFixedSize():

class FrameExample(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Frame Example")
        self.setGeometry(100, 100, 1500, 900)

        self.frame = QFrame()
        self.frame.setFixedSize(300, 300)
        self.frame.setStyleSheet("background-color:skyblue")

        self.frame1 = QFrame()
        self.frame1.setFixedSize(600, 600)
        self.frame1.setStyleSheet("background-color:lightgreen")

        layout = QVBoxLayout(self)
        layout.addWidget(self.frame)
        layout.addWidget(self.frame1)