繁体   English   中英

PyQt:LineEdit小部件在FormLayout中的位置

[英]PyQt: LineEdit widget's placement inside of FormLayout

使用.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的行为与平台相关的。 引用文档

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

但是,有一个setFieldGrowthPolicy方法,该方法可用于替代 Mac OSX上的默认行为。 因此,请尝试:

    my_formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.ExpandingFieldsGrow)

要么:

    my_formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM