连接 QPushButton 的尺寸
我有一个带有 QPushButtons 的网格状视图。按钮内容不是静态的,因此列大小会动态扩展。出于美观原因,我希望每列具有相同的列大小。
现在我在显示小部件后使用 adjustment_sizes 函数,因为我注意到如果我在显示小部件之前调用它,则不会发生任何变化。但我的解决方案对我来说似乎很难看。有更好的方法吗?
我的功能:
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)
这就是我使用它的方式:
g=launcher()
g.show()
g.adjust_sizes()
有更好的方法吗?
编辑: 至于澄清,这里是所需的屏幕截图(看看 Raceyman 的答案):
所需的外观:
这是我得到的:
我的系统:
Arch Linux x86_64, Python 3.2 或 2.7.1、PyQt 4.8.4、Qt 4.7.3
I have a grid-like view with QPushButtons. The buttons content isn't static, so the column sizes expands dynamically. And I want same column size for each column for aesthetical reasons.
Now I'm using an adjust_sizes function after showing the widget, because I noticed If I call it before showing the widget, nothing changes. But my solutions seems ugly to me. Is there a better way for that?
My function:
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)
And thats how I use it:
g=launcher()
g.show()
g.adjust_sizes()
Is there a better way for doing that?
Edit:
As for clarify here is the desired screenshots(Look at Raceyman's answer):
Desired Look:
Here is what I get:
My System:
Arch Linux x86_64, Python 3.2 or 2.7.1, PyQt 4.8.4, Qt 4.7.3
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果这不是真正的答案(评论有点长),我很抱歉,但我想知道您使用的 PyQt 版本是否可能是原因的一部分。我正在使用 4.8.3(我认为),当我使用 QGridLayout 以这种方式构建对话框时,默认情况下,列的大小都是相等的。这是一个(非常非常非常粗略的)示例:
这是生成的对话框的屏幕截图:
希望这与您正在尝试做的事情类似。
My apologies if this isn't really an answer (it's a bit long for comments), but I'm wondering if the version of PyQt you're using might be part of the cause. I'm using 4.8.3 (I think), and when I build a dialog this way using QGridLayout the columns, by default, are all equal sizes. Here is a (very, very, very crude) example:
Here is a screenshot of the resultant dialog:
Hopefully this is similar to what you are trying to do.