python - PyQt : How to stick a widget to the bottom edge of dialog

标签 python pyqt4 qtgui qtcore qapplication

运行此代码会创建一个带有标签、行编辑器和两个按钮的简单对话框。 所有的小部件都可以很好地响应对话框的水平调整大小。但是对话框底部的按钮在垂直调整大小时不会粘在对话框窗口的下边缘。确保按钮始终位于对话框底部边缘的可能解决方案是什么?

from PyQt4 import QtCore, QtGui
app = QtGui.QApplication(sys.argv)



class mainWindow(QtGui.QMainWindow):

    def __init__(self):
        super(mainWindow, self).__init__()

        mainQWidget = QtGui.QWidget()
        mainLayout=QtGui.QFormLayout()
        mainLayout.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow)

        label = QtGui.QLabel('My Label')  
        lineEdit = QtGui.QLineEdit()
        mainLayout.addRow(label, lineEdit)

        ButtonBox = QtGui.QGroupBox()
        ButtonsLayout = QtGui.QHBoxLayout()

        Button_01 = QtGui.QPushButton("Close")
        Button_02 = QtGui.QPushButton("Execute")

        ButtonsLayout.addWidget(Button_01)
        ButtonsLayout.addWidget(Button_02)

        ButtonBox.setLayout(ButtonsLayout)
        mainLayout.addRow(ButtonBox)

        mainQWidget.setLayout(mainLayout)
        self.setCentralWidget(mainQWidget)


if __name__ == '__main__':
    window = mainWindow()
    window.show()
    window.raise_() 
    window.resize(480,320)
    app.exec_()

最佳答案

我建议使用 QVBoxLayout 作为您的主要布局,在 QFormLayout 和按钮的 QHBoxLayout 之间有一段距离。

作为基于您当前对话的示例:

import sys
from PyQt4 import QtGui


class MainWindow(QtGui.QMainWindow):

    def __init__(self):
        super(MainWindow, self).__init__()

        label = QtGui.QLabel('My Label')
        line_edit = QtGui.QLineEdit()

        form_layout = QtGui.QFormLayout()
        form_layout.addRow(label, line_edit)

        close_button = QtGui.QPushButton('Close')
        execute_button = QtGui.QPushButton('Execute')

        button_layout = QtGui.QHBoxLayout()
        button_layout.addWidget(close_button)
        button_layout.addWidget(execute_button)

        main_layout = QtGui.QVBoxLayout()
        main_layout.addLayout(form_layout)
        main_layout.addStretch()
        main_layout.addLayout(button_layout)

        central_widget = QtGui.QWidget()
        central_widget.setLayout(main_layout)
        self.setCentralWidget(central_widget)


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = MainWindow()
    window.resize(480, 320)
    window.show()
    sys.exit(app.exec_())

关于python - PyQt : How to stick a widget to the bottom edge of dialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22234671/

相关文章:

python - Setter dict 就像对象中的属性一样

python - 运行 Django 测试时出现类型错误

c++ - 表格 View 搜索

c++ - Qt QFileDialog 再次弹出

Qt:使用样式表设置背景图像不适用于资源

python - 在\n [string]\n 之间捕获字符串

python - 替换pandas groupby并apply以提高性能

python - 双击 PyQt4 QTableWidget 上的行将内容设置为 -1

python - 检查 QSettings 是否使用默认值

Qt如何更改gridlayout列的大小