Как отобразить Qframe в качестве фактического размера в PyQt5?

#python #pyqt #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_())
 

Ответ №1:

С 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)
 

Комментарии:

1. Его работа, но если окно изменится, оно не будет расти, мне нужно с ростом и уменьшением

2. Я не понимаю, что вы имеете в виду. Ваш запрос был ясен: «Отображать рамку указанного размера». Если у вас есть другие требования, создайте новую запись, в которой вы подробно расскажете, что вам нужно.