调整主窗口的大小

时间:2016-09-13 09:47:14

标签: qt pyqt qt4 pyqt4

我使用了setGeometry方法来为我的所有小部件提供大小。我知道这不是最好的事情,但这是我第一次使用PyQt。 现在的问题是,当我点击“最大化”按钮时,我的所有小部件都保持不变... 我曾尝试使用resizeEvent,但是PyQt在这个事件的发送者之间没有任何区别:事实上,当使用最大化按钮调整窗口大小时,或者通过拉伸窗口使用鼠标来发送此事件。

我在寻找什么: 按下最大化按钮时发送的特定信号,以便我可以捕获此信号并应用我的setGeometry()方法,但这次是为了适应全屏模式。 但我不知道这样的事情是否存在......

如果不是,还有其他办法可以做我需要的吗?

感谢您阅读!

1 个答案:

答案 0 :(得分:0)

你以完全错误的方式解决这个问题。 Qt已经自动处理了所有这些东西(只要你使用正确的API)。

我建议你做以下事情:

  1. 阅读Qt' Layout Management Overview
  2. 了解如何使用Qt Designer(特别是关于Using Layouts的部分)。
  3. 阅读Using Qt Designer Guide。{/ li>中的PyQt Documentation

    与此同时,这是一个简单的演示脚本:

    from PyQt4 import QtCore, QtGui
    
    class Window(QtGui.QWidget):
        def __init__(self):
            super(Window, self).__init__()
            self.label = QtGui.QLabel('Layout Management Example', self)
            self.label.setAlignment(QtCore.Qt.AlignCenter)
            self.edit1 = QtGui.QLineEdit(self)
            self.edit2 = QtGui.QLineEdit(self)
            self.button = QtGui.QPushButton('Maximize', self)
            self.button.clicked.connect(self.handleButton)
            layout = QtGui.QGridLayout(self)
            layout.addWidget(self.label, 0, 0, 1, 2)
            layout.addWidget(self.edit1, 1, 0)
            layout.addWidget(self.edit2, 1, 1)
            layout.addWidget(self.button, 2, 0, 1, 2)
    
        def handleButton(self):
            if self.button.text() == 'Maximize':
                self.button.setText('Restore')
                self.showMaximized()
            else:
                self.button.setText('Maximize')
                self.showNormal()
    
    if __name__ == '__main__':
    
        import sys
        app = QtGui.QApplication(sys.argv)
        window = Window()
        window.setGeometry(500, 150, 500, 300)
        window.show()
        sys.exit(app.exec_())