无法将QMainWindow设置为s

2024-09-29 17:12:15 发布

您现在位置:Python中文网/ 问答频道 /正文

一个最小的例子:

class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent = None):
    QtGui.QMainWindow.__init__(self, parent)

    winWidth = 683
    winHeight = 784

    screen = QtGui.QDesktopWidget().availableGeometry()
    screenCenterX = (screen.width() - winWidth) / 2
    screenCenterY = (screen.height() - winHeight) / 2
    self.setGeometry(screenCenterX, screenCenterY, winWidth, winHeight)

    layout = QtGui.QVBoxLayout()

    layout.addWidget(FormA())

    mainWidget = QtGui.QWidget()
    mainWidget.setLayout(layout)

    self.setCentralWidget(mainWidget)

FormA是一个QFrame,其VBoxLayout可以扩展到任意数量的条目。在

在上面发布的代码中,如果表单中的条目不能适应窗口,那么窗口本身就会增长。我希望窗口可以滚动。我也试过以下方法。。。在

替换

^{pr2}$

    mainWidget = QtGui.QScrollArea()
    mainWidget.setLayout(layout)

    self.setCentralWidget(mainWidget)

如果窗体和条目无法放入窗口,则会导致它们收缩。在

替换为

            mainWidget = QtGui.QWidget()
            mainWidget.setLayout(layout)
            scrollWidget = QtGui.QScrollArea()
            scrollWidget.setWidget(mainWidget)

            self.setCentralWidget(scrollWidget)

结果mainwidget(由表单组成)在窗口的左上角被扭曲,在窗口的右下角留下了很大的空白区域,并且仍然无法滚动。在

我不能设置窗口大小的限制,因为我希望它可以调整大小。在

如何使这个窗口可滚动?在


Tags: selfinit条目screenparentlayoutqtguiqmainwindow
2条回答

我建议直接将表单设置为滚动区域的小部件:

scrollWidget = QtGui.QScrollArea()
scrollWidget.setWidget(FormA())

self.setCentralWidget(scrollWidget)

如果这不起作用,那么举第三个例子,但是将小部件的扩展策略设置为扩展或最小扩展。在

通过。。。在

mainWidget = QtGui.QWidget()
mainWidget.setLayout(layout)

scrollWidget = QtGui.QScrollArea()
scrollWidget.setWidget(mainWidget)
scrollWidget.setWidgetResizable(True) # <       -

self.setCentralWidget(scrollWidget)

相关问题 更多 >

    热门问题