0

我在 OSX 10.8 上使用 python 2.7.5。我正在学习 PySide 并尝试构建一个简单的 GUI。

我设法使用按钮(WOAAA!)用于选择路径或执行功能:

pathBtn = QtGui.QPushButton("FITS file path", self)
pathBtn.setToolTip('Choose the <b>path</b> to your FITS file')
pathBtn.clicked.connect(essai)
pathBtn.resize(pathBtn.sizeHint())
pathBtn.move(200, 100) 

我的问题是,当程序运行时,我用鼠标光标改变窗口的大小,按钮不移动,不适应大小变化。

我试图找到一些答案(地狱是的谷歌),我知道“QVBoxLayout”应该做我想要的(某种“动态”定位,不知道是否有一个特定的名称),但我没有了解它的语法或如何使用它...

任何帮助表示赞赏!

4

1 回答 1

1

在 Qt 小部件中,布局和小部件的大小提示决定了如何调整大小。布局小部件的一般过程是(例如):

dialog = QDialog()
layout = QVBoxLayout()
label = QLabel('This is a label')
edit = QLineEdit('This is a line edit box')
layout.addWidget(label)
layout.addWidget(edit)
dialog.setLayout(layout)

(*我不能在工作中测试这个代码(没有 Qt/PySide),所以考虑这个“伪代码”:-)

这会产生一个带有标签和编辑框的对话框小部件。如果调整对话框小部件的大小,小部件的布局和调整大小属性可确保标签和编辑框适当调整大小:水平方向都最大扩展,但垂直方向编辑将保持相同大小,而标签占用所有剩余空间。这是因为编辑框的调整大小提示说它要保持其高度(即一行文本)。

如果您不指定布局,则您的小部件(按钮、标签)在调整其父小部件的大小时不会做任何事情,这就是您所观察到的。因此,解决方案确实是 QVBoxLayout,按照我上面的描述使用它。

顺便说一句:对于更复杂的布局,您可能希望使用 Qt 提供的 Designer 工具:该工具可让您先验地查看和测试您的 GUI。

于 2013-07-11T10:28:14.560 回答