【问题标题】:How to deal with tables in QGridLayout acting weird如何处理 QGridLayout 中的表格表现得很奇怪
【发布时间】:2020-12-08 19:49:43
【问题描述】:

我无法将 2 个表格放入 QGridLayout。我已经阅读了一些示例,并认为我掌握了它。显然,我没有。我是这样想象的:

所以我认为这段代码应该可以工作:

layout = QGridLayout()
layout.addWidget(smalltable, 0, 1, 1, 2)
layout.addWidget(bigtable, 1, 0, 4, 4)

但是我得到了这样的东西:

【问题讨论】:

  • 当我运行你的代码时,我没有得到你想要的,但我也没有得到你声称得到的i.imgur.com/oVVIWEX.png
  • @eyllanesc 可能是因为我为所有列设置了固定大小?
  • 我已经在其他评论中回答了:如果您需要帮助,请提供 MRE;我们不是来猜谜语的

标签: python pyqt qgridlayout


【解决方案1】:

一种可能的解决方案是使用setRowStretch() 设置拉伸因子:

import sys

from PyQt5.QtWidgets import QApplication, QGridLayout, QTableWidget, QWidget

app = QApplication(sys.argv)

smalltable = QTableWidget(4, 4)
bigtable = QTableWidget(5, 5)

w = QWidget()

layout = QGridLayout(w)
layout.addWidget(smalltable, 0, 1, 1, 2)
layout.addWidget(bigtable, 1, 0, 1, 4)
layout.setRowStretch(0, 1)
layout.setRowStretch(1, 4)

w.resize(640, 480)
w.show()

sys.exit(app.exec_())

【讨论】:

  • 谢谢!使用 setRowStretch() ,大小表的高度似乎按比例正确,但它们仍然很奇怪。小桌子现在“右对齐”。它粘在右上角。
  • @MichaelEvergreen 您是否在使用我的代码或尝试实施我的解决方案的原始代码中看到了这种行为?如果它是第一个,那么如果您提供您所得到的图像,那就太好了,如果它是第二个没有任何minimal reproducible example,我不可能知道是什么产生了错误。为了证明我的解决方案有效,我在答案中添加了屏幕截图
  • 谢谢!我想我找到了原因。我为一些按钮注释掉了“layout.addWidget”,认为这会使这些按钮消失,但它们实际上粘在了左上角。
猜你喜欢
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 2016-12-02
相关资源
最近更新 更多