Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x PyQt4 Mdi子窗口未正确调整大小_Python 3.x_Pyqt4 - Fatal编程技术网

Python 3.x PyQt4 Mdi子窗口未正确调整大小

Python 3.x PyQt4 Mdi子窗口未正确调整大小,python-3.x,pyqt4,Python 3.x,Pyqt4,在以下示例中,单击该按钮时,将重新生成整个表单,每次添加一个新标签。最后是一个似乎不起作用的调整大小调用。调试时,我验证了sizeHint()是否返回了正确的尺寸,小部件内部认为大小正确,但绘制的内容不正确。如何强制MDI窗口正确调整大小?同样值得注意的是,当大小不正确时,如果手动开始调整大小,它会突然捕捉到适当的大小 import sys import os from PyQt4.QtCore import * from PyQt4.QtGui import * import PyQt4.Q

在以下示例中,单击该按钮时,将重新生成整个表单,每次添加一个新标签。最后是一个似乎不起作用的调整大小调用。调试时,我验证了
sizeHint()
是否返回了正确的尺寸,小部件内部认为大小正确,但绘制的内容不正确。如何强制MDI窗口正确调整大小?同样值得注意的是,当大小不正确时,如果手动开始调整大小,它会突然捕捉到适当的大小

import sys
import os

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import PyQt4.Qt

class MdiWindow(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.count = 0
        self.buildWindow()

    def buildWindow(self):
        main = QVBoxLayout()

        button = QPushButton('Change Count')
        button.clicked.connect(self.changeCount)
        main.addWidget(button)

        for i in range(self.count):
            main.addWidget(QLabel(str(i)))

        widget = QWidget()
        widget.setLayout(main)
        self.setCentralWidget(widget)

        self.resize(main.sizeHint())

    def changeCount(self, event):
        self.count += 1
        self.buildWindow()

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Resize Test')
        self.mdiArea = QMdiArea()
        self.setCentralWidget(self.mdiArea)

        child = MdiWindow()
        self.mdiArea.addSubWindow(child)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit(app.exec_())

如果您对resize方法进行两次调用,会发生什么情况?我发布了整个示例,因此您可以自己尝试,但没有,这无助于解决问题这很奇怪。根据权限,您的方法应该在没有任何用户交互的情况下工作。我会假设,通过两次调用,第一次调用将“准备”重新调整大小的窗口。话虽如此,python并不是我的强项。