#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. Я не понимаю, что вы имеете в виду. Ваш запрос был ясен: «Отображать рамку указанного размера». Если у вас есть другие требования, создайте новую запись, в которой вы подробно расскажете, что вам нужно.