Как сделать так, чтобы размеры изображения в окне менялись вместе с измененными размерами самого окна?
Начал изучать PyQt5 и столкнулся с такой проблемой, что фоновое изображение (QLabel, QPixmap) не меняется в зависимости от изменения размера окна (QMainWindow).
Пролистал множество сайтов и нашел функцию resizeEvent(), но не знаю как ее внедрить.
Может быть есть альтернативные способы?
main.py:
import sys
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
from main_wK01 import K01
class Window(QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setWindowTitle("ЭХЗ")
self.setGeometry(250, 120, 1270, 800)
self.picture = QtWidgets.QLabel(self)
self.picture.setGeometry(0, 0, 1270, 800)
self.picture.setPixmap(QtGui.QPixmap("logo.png"))
self.picture.setScaledContents(True)
self.btn = QtWidgets.QPushButton(self)
self.btn.move(1120, 370)
self.btn.setText("К-01")
self.btn.setFixedWidth(150)
self.btn.clicked.connect(self.K01)
self.btn1 = QtWidgets.QPushButton(self)
self.btn1.move(1120, 400)
self.btn1.setText("К-03")
self.btn1.setFixedWidth(150)
def K01 (self):
self.bK01 = K01()
self.bK01.show()
def application():
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
if __name__=="__main__":
application()
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Научитесь использовать менеджеры компоновки.
Например, класс QGridLayout размещает виджеты в сетке.
import sys
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
# ? from main_wK01 import K01
class Window(QMainWindow):
def __init__(self):
super(Window, self).__init__()
# !!! +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
self.centralWidget = QtWidgets.QWidget()
self.centralWidget.setObjectName("centralWidget")
self.centralWidget.setStyleSheet("background-color: rgb(255, 192, 225);")
self.setCentralWidget(self.centralWidget)
# !!! +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.setWindowTitle("ЭХЗ")
# ? self.setGeometry(250, 120, 1270, 800)
self.picture = QtWidgets.QLabel(self)
# self.picture.setGeometry(0, 0, 1270, 800)
self.picture.setPixmap(QtGui.QPixmap("Ok.png"))
self.picture.setScaledContents(True)
self.btn = QtWidgets.QPushButton(self)
# self.btn.move(1120, 370)
self.btn.setText("К-01")
self.btn.setFixedWidth(150)
self.btn.clicked.connect(self.K01)
self.btn.setStyleSheet("background-color: rgb(192, 192, 225);")
self.btn1 = QtWidgets.QPushButton(self)
# self.btn1.move(1120, 400)
self.btn1.setText("К-03")
self.btn1.setFixedWidth(150)
self.btn1.setStyleSheet("background-color: rgb(192, 192, 225);")
# !!! +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
self.layout = QtWidgets.QGridLayout(self.centralWidget)
self.layout.addWidget(self.picture, 0, 0, 4, 1)
self.layout.addWidget(self.btn, 1, 1)
self.layout.addWidget(self.btn1, 2, 1)
# !!! +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
def K01 (self):
# ? self.bK01 = K01()
# ? self.bK01.show()
pass
def application():
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
if __name__=="__main__":
application()

