我使用了setGeometry方法来为我的所有小部件提供大小。我知道这不是最好的事情,但这是我第一次使用PyQt。 现在的问题是,当我点击“最大化”按钮时,我的所有小部件都保持不变... 我曾尝试使用resizeEvent,但是PyQt在这个事件的发送者之间没有任何区别:事实上,当使用最大化按钮调整窗口大小时,或者通过拉伸窗口使用鼠标来发送此事件。
我在寻找什么: 按下最大化按钮时发送的特定信号,以便我可以捕获此信号并应用我的setGeometry()方法,但这次是为了适应全屏模式。 但我不知道这样的事情是否存在......
如果不是,还有其他办法可以做我需要的吗?
感谢您阅读!
答案 0 :(得分:0)
你以完全错误的方式解决这个问题。 Qt已经自动处理了所有这些东西(只要你使用正确的API)。
我建议你做以下事情:
与此同时,这是一个简单的演示脚本:
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_())