使用 .addRow() 方法将 QtGui.QLineEdit line_edit 小部件放置在 QtGui.QFormLayout 表单布局内。
my_formLayout.addRow(my_label, my_lineEdit)
要使 line_edit 小部件粘在对话框窗口的边缘(以便它随对话框调整大小),请尝试使用 sizePolicy:
sizePolicy = my_lineEdit.sizePolicy()
sizePolicy.setHorizontalStretch(1)
my_lineEdit.setSizePolicy( sizePolicy )
没有错误。但是 line_edit 小部件仍然没有粘在对话框的边缘...可能出了什么问题?
最佳答案
您不需要做任何事情。
这个简单的示例根据需要调整大小:
from PyQt4 import QtGui
class Dialog(QtGui.QDialog):
def __init__(self):
super(Dialog, self).__init__()
form = QtGui.QFormLayout(self)
label = QtGui.QLabel('Label', self)
edit = QtGui.QLineEdit(self)
form.addRow(label, edit)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Dialog()
window.setGeometry(500, 300, 300, 50)
window.show()
sys.exit(app.exec_())
更新:
好吧,看来 QFormaLayout 的行为依赖于平台。引用docs :
Style based on the Mac OS X Aqua guidelines. Labels are right-aligned, the fields don't grow beyond their size hint, and the form is horizontally centered.
但是,有一个setFieldGrowthPolicy方法,可用于覆盖 Mac OSX 上的默认行为。所以尝试一下:
my_formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.ExpandingFieldsGrow)
或者:
my_formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow)
关于python - PyQt:表单布局内的 QLineEdit 小部件放置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21467262/