あなたは完全に間違った方法でこれについて考えています。 Qtはこの種のものを自動的に処理します(正しいAPIを使用している限り)。
私はあなたが次の操作を行い勧め:
- 読むQtのLayout Management Overview。
- Qt Designerの使い方を学んでください(特にUsing Layoutsの部分)。
- PyQt DocumentationのUsing Qt Designer Guideをお読みください。
また、ここでは簡単なデモスクリプトです:
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_())