代码拉取完成,页面将自动刷新
同步操作将从 sunshe35/PyQt6-codes 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
# -*- coding: utf-8 -*-
"""
【简介】
QBoxLayout布局管理例子,同样可适用于QVBoxLayout和QHBoxLayout
"""
import sys
from PyQt6.QtWidgets import *
from PyQt6.QtCore import Qt
class BoxLayoutDemo(QWidget):
def __init__(self, parent=None):
super(BoxLayoutDemo, self).__init__(parent)
self.setWindowTitle("Q(H/V)BoxLayout布局管理例子")
self.resize(800, 200)
# 水平布局按照从左到右的顺序进行添加按钮部件。
# layout = QBoxLayout(QBoxLayout.LeftToRight)
# layout = QBoxLayout(QBoxLayout.RightToLeft)
# layout = QVBoxLayout()
layout = QHBoxLayout()
# addWidget
layout.addWidget(QPushButton(str(1)), stretch=1, alignment=Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop)
layout.addWidget(QPushButton(str(2)), stretch=1)
layout.addWidget(QPushButton(str(3)), alignment=Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignBottom)
# addStretch
layout.addStretch(2)
layout.addWidget(QPushButton('addStretch1'), stretch=1, alignment=Qt.AlignmentFlag.AlignTop)
layout.addStretch(1)
layout.addWidget(QPushButton('addStretch2'), stretch=2)
# addSpacing
layout.addSpacing(10)
layout.addWidget(QPushButton('addSpacing'))
# addLayout
vlayout = QVBoxLayout()
for i in range(3):
vlayout.addWidget(QPushButton('addLayout%s' % (i + 1)))
# 设置边距
vlayout.setContentsMargins(10, 20, 40, 60)
vlayout.setSpacing(10)
layout.addLayout(vlayout)
self.setLayout(layout)
# 显示sizePolice和sizeHint信息-基于QWidget
_str = ''
for w in self.findChildren(QPushButton):
# if hasattr(w,'text'):
vPolicy = w.sizePolicy().verticalPolicy().name
hPolicy = w.sizePolicy().horizontalPolicy().name
sizeHint = (w.sizeHint().width(),w.sizeHint().height())
_str = _str + f'按钮:{w.text()},sizeHint:{sizeHint},sizePolicy:{vPolicy}/{hPolicy}' + '\n'
self.label = QLabel()
self.label.setText(_str)
self.label.setWindowTitle('显示sizePolice和sizeHint信息-基于QWidget')
self.label.show()
# 显示stretch、sizePolice、sizeHint信息-基于Layout
_str2 = ''
for i in range(layout.count()):
item = layout.itemAt(i)
stretch = layout.stretch(i)
if isinstance(item.widget(), QPushButton):
w = item.widget()
vPolicy = w.sizePolicy().verticalPolicy().name
hPolicy = w.sizePolicy().horizontalPolicy().name
sizeHint = (item.sizeHint().width(),item.sizeHint().height())
# sizeHint = item.sizeHint().toTuple()
_str2 = _str2 + f'num:{i},按钮:{w.text()},stretch:{stretch},sizeHint:{sizeHint},sizePolicy:{vPolicy}/{hPolicy}' + '\n'
elif isinstance(item, QSpacerItem):
vPolicy = item.sizePolicy().verticalPolicy().name
hPolicy = item.sizePolicy().horizontalPolicy().name
sizeHint = (item.sizeHint().width(),item.sizeHint().height())
# sizeHint = item.sizeHint().toTuple()
_str2 = _str2 + f'num:{i},QSpacerItem,stretch:{stretch},sizeHint:{sizeHint},sizePolicy:{vPolicy}/{hPolicy}' + '\n'
else: # 处理嵌套Layout
for j in range(vlayout.count()):
w = vlayout.itemAt(j).widget()
_str2 = _str2 + f'num:{i}-{j},按钮:{w.text()},stretch:{stretch},sizeHint:{sizeHint},sizePolicy:{vPolicy}/{hPolicy}' + '\n'
self.label2 = QLabel()
self.label2.setWindowTitle('显示stretch、sizePolice、sizeHint信息-基于Layout')
self.label2.setText(_str2)
self.label2.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
form = BoxLayoutDemo()
form.show()
sys.exit(app.exec())
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。