【问题标题】:MainWindow Widget Resize (Pyside)MainWindow 小部件调整大小(Pyside)
【发布时间】:2014-02-17 15:09:51
【问题描述】:

我在调整 GUI 应用程序的 MainWindow 大小时遇到​​问题。

这是我在尝试运行应用程序时看到的: Link Image 1

当我尝试用鼠标调整它的大小时会发生什么: Link Image 2

我希望这样,当我尝试调整 MainWindow 的大小时,它会像我之前显示的第一张图片一样显示内部的小部件,而不是在每个“标签”之间有那么大的间距。

如果它可以帮助,这是代码: Link Code

您可以直接使用 setUi()、setGridUI() 函数,而忽略其余代码。试着剪掉一些,让它变得简单..

谢谢你..

【问题讨论】:

    标签: python qt resize pyside qmainwindow


    【解决方案1】:

    如果您希望调整大小而不修改 QGridLayout 的中心,则需要在一些周围的行上进行不同的拉伸。

    我在您的内容上方和下方添加了一行,在您的内容的左侧和右侧添加了一列并添加了一段。

    http://doc.qt.io/qt-4.8/qgridlayout.html#setRowStretch

    http://doc.qt.io/qt-4.8/qgridlayout.html#setColumnStretch

    def setupGridUI(self):
        widget = QWidget()
        layout = QGridLayout()
        width, height = 10, 10
    
        root_x, root_y = random.randrange(width), random.randrange(height)
    
        for x in range(width):
            for y in range(height):
                random_wall = random.randrange(3)
                if x == root_x and y == root_y:
                    label = ClickableLabel(x, y, False, True)
                else:
                    if random_wall == 0:
                        label = ClickableLabel(x, y, True)
                    else:
                        label = ClickableLabel(x, y)
    
                layout.addWidget(label, x+1, y+1) # modified
    
        # added the following 4 lines
        layout.setRowStretch(0, 1);
        layout.setRowStretch(height+2, 1);
        layout.setColumnStretch(0, 1);
        layout.setColumnStretch(width+2, 1);
    
        widget.setLayout(layout)
        self.setCentralWidget(widget)
    
        self.setStyleSheet("QMainWindow {background: 'purple'}")
    

    希望对您有所帮助。

    【讨论】:

    • 谢谢,我正在尝试使用 addStretch(),但它不是 QGridLayout() 的属性:/ 有很多东西要学 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    相关资源
    最近更新 更多