Изменение размера виджета в зависимости от размера окна приложения
Подскажите как сделать так, чтобы размер виджета менялся вместе с размером окна?
В данном случае я пытаюсь изменять размер виджета взяв в качестве размера размеры окна. Но при запуске программы, если я меняю размер окна, размер виджета не меняется.
self.verticalWidget.setGeometry(QtCore.QRect(20, 30, Dialog.width(), Dialog.height()))
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(900, 900)
self.verticalWidget = QtWidgets.QWidget(Dialog)
self.verticalWidget.setGeometry(QtCore.QRect(20, 30, Dialog.width(), Dialog.height()))
self.verticalWidget.setObjectName("verticalWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.Welcome = QtWidgets.QLabel(self.verticalWidget)
font = QtGui.QFont()
font.setPointSize(24)
self.Welcome.setFont(font)
self.Welcome.setObjectName("Welcome")
self.verticalLayout.addWidget(self.Welcome)
self.Explanation = QtWidgets.QLabel(self.verticalWidget)
font = QtGui.QFont()
font.setPointSize(12)
self.Explanation.setFont(font)
self.Explanation.setObjectName("Explanation")
self.verticalLayout.addWidget(self.Explanation)
self.buttonBox = QtWidgets.QDialogButtonBox(self.verticalWidget)
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.verticalLayout.addWidget(self.buttonBox)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.Welcome.setText(_translate("Dialog", ""))
self.Explanation.setText(_translate("Dialog", ""))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Добавьте этот виджет в менеджер компоновки, созданный для главного окна.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(900, 900)
self.verticalWidget = QtWidgets.QWidget(Dialog)
self.verticalWidget.setGeometry(QtCore.QRect(20, 30, Dialog.width(), Dialog.height()))
self.verticalWidget.setObjectName("verticalWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.Welcome = QtWidgets.QLabel(self.verticalWidget)
font = QtGui.QFont()
font.setPointSize(24)
self.Welcome.setFont(font)
self.Welcome.setObjectName("Welcome")
self.verticalLayout.addWidget(self.Welcome)
self.Explanation = QtWidgets.QLabel(self.verticalWidget)
font = QtGui.QFont()
font.setPointSize(12)
self.Explanation.setFont(font)
self.Explanation.setObjectName("Explanation")
self.verticalLayout.addWidget(self.Explanation)
self.buttonBox = QtWidgets.QDialogButtonBox(self.verticalWidget)
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.verticalLayout.addWidget(self.buttonBox)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.Welcome.setText(_translate("Dialog", "Welcome"))
self.Explanation.setText(_translate("Dialog", "Explanation"))
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
class Dialog(QtWidgets.QDialog, Ui_Dialog):
def __init__(self):
super().__init__()
self.setupUi(self)
self.layout = QtWidgets.QHBoxLayout(self) # !!! +++
self.layout.addWidget(self.verticalWidget) # !!! +++
style = '''
#verticalWidget {
background-color: #4B8673;
}
#Explanation {
color: #F6FBF4;
}
'''
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
app.setStyleSheet(style) # +++
w = Dialog()
w.show()
sys.exit(app.exec_())
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
