PySide:GUI上按钮的“动态”定位?

时间:2013-07-11 09:53:00

标签: python pyside

我在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”应该做我想要的(某种“动态”定位,不知道是否有特定的名称),但我不明白它的语法也不懂如何使用它......

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分: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。

相关问题