【问题标题】:PyQt: LineEdit widget's placement inside of FormLayoutPyQt:表单布局内的 QLineEdit 小部件放置
【发布时间】:2014-02-23 09:24:04
【问题描述】:

QtGui.QLineEdit line_edit 小部件使用 .addRow() 方法放置在 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 小部件仍然没有粘在对话框的边缘......可能出了什么问题?

【问题讨论】:

    标签: python macos qt pyqt qtgui


    【解决方案1】:

    你不需要做任何事情。

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

    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)
    

    【讨论】:

    • 感谢您的 cmets!不幸的是,您的示例使 line_edit 小部件在对话框中居中。无论主对话框窗口有多大或多小,line_edit 小部件的大小都保持不变。我想将 line_edit 小部件的右侧或/和左侧边缘粘贴到对话框的边缘(-s)。
    • @Sputnix。你真的运行了我的例子吗?对我来说,它工作得很好。如果它在所有平台上的工作方式不同,我会感到惊讶,但我只在 Linux 上尝试过。
    • 截图:imagizer.imageshack.us/v2/1676x570q90/837/nw72.png 在 Mac OSX 上运行。
    • @Sputnix。请参阅我的更新答案以获取可能的解决方案。
    • 你已经 100% 搞定了!很棒的工作!我选择了“AllNonFixedFieldsGrow”,因为它使用对话框调整了所有内容(甚至是带有 .setMinimumWidth(value) 的小部件)。再一次,干得好!并感谢您的帮助!
    【解决方案2】:

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

    【讨论】:

    • 谢谢!但这对我不起作用。 line_edit 小部件仍未调整大小。也许还有其他一些聪明的建议?
    • 我认为你应该发布你在做什么的工作代码,只是为了测试和建议,布局有时不能很棘手:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 2017-08-29
    • 2018-08-14
    • 2017-09-06
    • 2011-05-30
    • 2014-12-01
    • 1970-01-01
    相关资源
    最近更新 更多