我有一个包含多个表的
QGroupBox
。
在某些时候,累积表格高度超过屏幕高度,因此它们会被压扁,并且每个滚动区域都会添加一个。
我想让表格保持其自然大小,并使整个
QGroupBox
可滚动。
尝试了以下方法:PyQt:如何使小部件可滚动。这没有帮助。滚动区域没有出现,看来Qt逻辑总是更喜欢挤压表格而不是展开
QGroupBox
。
我可以通过添加类似
myGroupBox.setMinimumHeight(3000)
的内容来使其出现。但这除了是一个丑陋的补丁之外,还会使桌子变形,使它们超出其自然尺寸,并在底部留下空白。
我该如何解决这个问题?谢谢。我在 Windows 上使用 Python3.9、PyQt5。
代码示例:
import random
from PyQt5 import QtWidgets
class SomeTable(QtWidgets.QTableWidget):
def __init__(self):
super().__init__()
header = ['A', 'B', 'C', 'D', 'E', 'F']
self.setColumnCount(len(header))
self.setHorizontalHeaderLabels(header)
for i in range(5):
self.insertRow(0)
for i in range(5):
for j in range(6):
self.setItem(i, j, QtWidgets.QTableWidgetItem(str(random.randint(0, 100))))
class Window(QtWidgets.QWidget):
def __init__(self):
super().__init__()
mygroupbox = QtWidgets.QGroupBox('this is my groupbox')
myform = QtWidgets.QVBoxLayout()
for i in range(10):
myform.addWidget(SomeTable())
mygroupbox.setLayout(myform)
scroll = QtWidgets.QScrollArea()
scroll.setWidget(mygroupbox)
scroll.setWidgetResizable(True)
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(scroll)
if __name__ == '__main__':
app = QtWidgets.QApplication(['Test'])
window = Window()
window.showMaximized()
app.exec_()