1 Star 0 Fork 36

juxuan/PyQt6-codes

forked from sunshe35/PyQt6-codes 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
qt_QBoxLayout.py 3.95 KB
一键复制 编辑 原始数据 按行查看 历史
sunshe35 提交于 3年前 . first commit
# -*- 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())
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/drx000/PyQt6-codes.git
git@gitee.com:drx000/PyQt6-codes.git
drx000
PyQt6-codes
PyQt6-codes
main

搜索帮助