Stack Overflow на русском Asked by or latym on December 7, 2021
Я пытаюсь сделать так, чтобы все виджеты были отцентрированы, но почему-то у меня это не получилось сделать.
Можно ли это сделать короткой строкой и применять к любому размеру виджета?
from PyQt5 import QtWidgets, QtCore, QtGui
import sys
class Test(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.resize(500, 500)
lay = QtWidgets.QVBoxLayout(self)
lay.setSpacing(0)
lay.setContentsMargins(0, 0, 0, 0)
main = QtWidgets.QWidget(self)
#main.setStyleSheet("background:{};".format(color1))
lay.addWidget(main)
main_lay = QtWidgets.QGridLayout(main)
main_lay.setSpacing(0)
main_lay.setContentsMargins(0, 0, 0, 0)
center = QtWidgets.QWidget(self)
center.setStyleSheet("background:{};".format('blue'))
center.setFixedWidth(100)
center.setFixedHeight(100)
center2 = QtWidgets.QWidget(self)
center2.setStyleSheet("background:{};".format('green'))
center2.setFixedWidth(300)
center2.setFixedHeight(300)
back = QtWidgets.QWidget(self)
back.setStyleSheet("background:{};".format('red'))
back.setFixedWidth(400)
back.setFixedHeight(400)
main_lay.addWidget(back, 0, 0, 1, 1)
main_lay.addWidget(center2, 0, 0, 1, 1)
main_lay.addWidget(center, 0, 0, 1, 1)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = Test()
w.show()
Попробуйте так:
from PyQt5 import QtWidgets, QtCore, QtGui
import sys
class Test(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.resize(500, 500)
lay = QtWidgets.QVBoxLayout(self)
lay.setSpacing(0)
lay.setContentsMargins(0, 0, 0, 0)
main = QtWidgets.QWidget(self)
#main.setStyleSheet("background:{};".format(color1))
lay.addWidget(main)
main_lay = QtWidgets.QGridLayout(main)
main_lay.setSpacing(0)
main_lay.setContentsMargins(0, 0, 0, 0)
center = QtWidgets.QWidget(self)
center.setStyleSheet("background:{};".format('blue'))
center.setFixedWidth(100)
center.setFixedHeight(100)
center2 = QtWidgets.QWidget(self)
center2.setStyleSheet("background:{};".format('green'))
center2.setFixedWidth(300)
center2.setFixedHeight(300)
back = QtWidgets.QWidget(self)
back.setStyleSheet("background:{};".format('red'))
back.setFixedWidth(400)
back.setFixedHeight(400)
main_lay.addWidget(back, 0, 0, 1, 1, alignment=QtCore.Qt.AlignCenter) # alignment
main_lay.addWidget(center2, 0, 0, 1, 1, alignment=QtCore.Qt.AlignCenter) # alignment
main_lay.addWidget(center, 0, 0, 1, 1, alignment=QtCore.Qt.AlignCenter) # alignment
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = Test()
w.show()
sys.exit(app.exec_())
Answered by S. Nick on December 7, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP