gpt4 book ai didi

python - addStretch 在 QBoxLayout 中究竟是如何工作的?

转载 作者:IT老高 更新时间:2023-10-28 21:01:24 24 4
gpt4 key购买 nike

我正在做一个关于盒子布局的 PyQt4 教程。但我不明白 addStretch 是如何工作的。

  • 如果我使用 vbox.addStretch(1)hbox.addStretch(1),这两个按钮会出现在右下方。为什么?
  • 如果我将 vbox.addStretch(1)hbox.addStretch(1) 注释掉,这两个按钮就会出现在我的窗口中央,它们是可水平变形,但不能垂直变形。为什么?
  • 如果我改变值“1”没有区别......那么这个值有什么作用?

下面是我正在使用的代码:

import sys
from PyQt4 import QtGui

class BoxLayout(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)

self.setWindowTitle('box layout')

ok = QtGui.QPushButton("OK")
cancel = QtGui.QPushButton("Cancel")

vbox = QtGui.QHBoxLayout()
vbox.addStretch(1)
vbox.addWidget(ok)
vbox.addWidget(cancel)

hbox = QtGui.QVBoxLayout()
hbox.addStretch(1)
hbox.addLayout(vbox)

self.setLayout(hbox)

self.resize(100, 100)

app = QtGui.QApplication(sys.argv)
qb = BoxLayout()
qb.show()
sys.exit(app.exec_())

最佳答案

addStretch方法添加了 QSpacerItem到盒子布局的末尾。 QSpacerItem 是一个可调整的空白空间。

  1. 使用 vbox.addStretch(1) 将添加一个零宽度的分隔项从布局顶部垂直向下扩展。

    使用 hbox.addStretch(1) 将添加一个高度为零的分隔项从布局的左侧向右水平扩展。

  2. 不拉伸(stretch),布局将由 sizePolicy的小部件。对于 QPushButton,这是 QSizePolicy.Fixed对于垂直尺寸,和 QSizePolicy.Minimum对于水平尺寸。如果您希望按钮展开两个方向,你可以这样做:

        ok.setSizePolicy(QtGui.QSizePolicy.Minimum,
    QtGui.QSizePolicy.Minimum)
    cancel.setSizePolicy(QtGui.QSizePolicy.Minimum,
    QtGui.QSizePolicy.Minimum)
  3. 传递给 addStretch 的参数改变了拉伸(stretch)因子。如果你在确定按钮之后添加第二个拉伸(stretch):

        vbox = QtGui.QHBoxLayout()
    vbox.addStretch(1)
    vbox.addWidget(ok)
    vbox.addStretch(2)
    vbox.addWidget(cancel)

    您会看到第二个间隔项的增长速度是第一个间隔项的两倍第一的。如果你将第一个拉伸(stretch)设置为零,它就不会增长全部。

如果您想了解更多信息,请参阅 Layout Management Qt 文档中的文章。使用 Qt Designer 也是一个好主意尝试这样的东西,因为它会给您即时的视觉反馈,并向您显示所涉及的各种属性的所有默认值。

关于python - addStretch 在 QBoxLayout 中究竟是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20452754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com