PyQt6 QGridLayout 间距与边距问题

我是小鱼,今天是2022年6月8日

最近其实还是一直在研究之前的扫雷,在使用PyQt6的时候遇到了网格布局的问题,之前也遇到过,因为放入的内容都是一些文本标签或者输入框,没那么敏感。但是在放入扫雷的泥土方块的时候就显得敏感了。

简单说明一下,我是把所有的泥土都放在一个QFrame中的,然后又使用了QSS来设置的QFrame的style

上图说明:(顺便说一下,这里的padding:0px根本没起作用,删了效果也一样)

当我加入网格布局的泥土之后,就变成了周围多了一圈边距,见下图。而且从下面这张图中能很明显看到,虽然我设置了Spacing为0,但好像泥土为了留出这些边距特意重叠起来了。这也是我刚刚说stylesheet中那句padding:0px没用的原因。后来发现这里的边距是QGridLayout自己的,这里还有一个命令是setContentsMargins,可以分别设置上下左右四个边距。

但一开始我不知道啊,于是我放大了窗口,放大了QFrame的尺寸,于是就出现了下图左这样的效果,丑啊!而且能很明显看到,虽然spacing为0,但是这些泥土的间隙还是因为QFrame变大而变大了,我在网上搜了好多,还给别的博主留言。我一直都没有找到解决方法。直到看到一篇文章中提到了setContentsMargins。于是我设置都为0,我一开始没有把窗口调小,于是出现了下图右这样的结果

能明显看到左边距和上边距有缩小,但是还是存在。调小窗口之后,对了!!!见下图

真是瞎猫碰上死耗子,但是我还是不明白这里面的逻辑。瞎猫不死心,于是我把setSpacing(0)删了,于是出现了下面这个样子。好像出现了间距,因为最右边和最下编的超出了Frame了。我估计这里应该是有个默认值。怀疑这个默认值应该与Frame的默认sytle有关,我看那个描述setContentsMargins帖子里说应该是9.

经验分享 程序员 微信小程序 职场和发展