首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接QPushButton的尺寸

问连接QPushButton的尺寸
EN

Stack Overflow用户
提问于 2011-05-17 17:17:37
回答 1查看 1.2K关注 0票数 0

我在QPushButtons上有一个类似网格的视图。按钮内容不是静态的,因此列的大小会动态扩展。出于美学上的原因,我希望每一栏都有相同的栏目大小。

现在,在显示小部件之后,我使用了一个adjust_sizes函数,因为我注意到,如果在显示小部件之前调用它,没有什么变化。但我觉得我的解决方案很难看。有更好的方法吗?

我的职能:

代码语言:javascript
复制
def adjust_sizes(self):
    max_width=0
    for i in self.buttons:
        if i.geometry().width() > max_width : 
            max_width=i.geometry().width()
    for i in self.buttons: i.setMinimumSize(max_width,0)

我就是这么用的:

代码语言:javascript
复制
g=launcher()
g.show()
g.adjust_sizes()

有什么更好的方法吗?

编辑:澄清了这里需要的屏幕截图(请看Raceyman的答案):

期望的外观:

​

​

我得到的是:

​

​

我的系统:

Arch x86_64,Python3.2或2.7.1,PyQt 4.8.4,QT4.7.3

EN

回答 1

Stack Overflow用户

发布于 2011-05-18 14:21:30

我很抱歉,如果这不是一个真正的答案(评论有点长),但我想知道您使用的PyQt版本是否是原因之一。我使用的是4.8.3 (我认为),当我以这种方式使用QGridLayout构建一个对话框时,默认情况下,列都是相同大小的。下面是一个(非常,非常,非常粗糙)的例子:

代码语言:javascript
复制
from PyQt4 import QtGui, QtCore
import sys

class launcher(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)
        mainlayout = QtGui.QGridLayout()
        buttons = [['a', 'aaaa', 'aaaaaaa', 'a'], 
                   ['b', 'bbbbbbbbbb', 'bbbbb', 'b'], 
                   ['c','c','c', 'c']]
        for i, buttonrow in enumerate(buttons):
            for j, button in enumerate(buttonrow):                
                mainlayout.addWidget(QtGui.QPushButton(button), i, j)
        self.setLayout(mainlayout)
        self.exec_()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    g = launcher()
    g.show()

下面是生成对话框的屏幕截图:

​

​

希望这与你想要做的事情是相似的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6034605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档