PyQt:FormLayout中的QLineEdit小部件放置

时间:2014-01-30 20:58:43

标签: python macos qt pyqt qtgui

使用.addRow()方法将 QtGui.QLineEdit line_edit小部件放在 QtGui.QFormLayout 表单布局中。

my_formLayout.addRow(my_label, my_lineEdit) 

使用sizePolicy尝试使line_edit小部件坚持对话框窗口的边缘(因此使用对话框重新调整大小):

    sizePolicy = my_lineEdit.sizePolicy()
    sizePolicy.setHorizontalStretch(1)
    my_lineEdit.setSizePolicy( sizePolicy )

没有错误。但是line_edit小部件仍然没有坚持到对话框的边缘......可能出错了什么?

2 个答案:

答案 0 :(得分:2)

你不应该做任何事情。

这个简单的例子根据需要调整大小:

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

  

基于Mac OS X Aqua指南的样式。标签是右对齐的,字段不会超出其大小提示,并且表单是水平居中的。

但是,有一个setFieldGrowthPolicy方法,可用于覆盖Mac OSX上的默认行为。所以试试:

    my_formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.ExpandingFieldsGrow)

或:

    my_formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow)

答案 1 :(得分:0)

试试这个:sizePolicy.setHorizontalPolicy(QSizePolicy.Expanding)