gpt4 book ai didi

Python PyQt 设置滚动区域

转载 作者:太空狗 更新时间:2023-10-30 00:25:14 24 4
gpt4 key购买 nike

我试图让我的 QGroupBox 在它超过 400px 时可以滚动。 QGroupBox 中的内容是使用 for 循环生成的。这是如何完成的示例。

mygroupbox = QtGui.QGroupBox('this is my groupbox')
myform = QtGui.QFormLayout()
labellist = []
combolist = []
for i in range(val):
labellist.append(QtGui.QLabel('mylabel'))
combolist.append(QtGui.QComboBox())
myform.addRow(labellist[i],combolist[i])
mygroupbox.setLayout(myform)

由于 val 的值取决于其他一些因素,因此无法确定 myform 布局大小。为了解决这个问题,我像这样添加了一个QScrollableArea

scroll = QtGui.QScrollableArea()
scroll.setWidget(mygroupbox)
scroll.setWidgetResizable(True)
scroll.setFixedHeight(400)

不幸的是,这似乎对组框没有任何影响。没有滚动条的迹象。我错过了什么吗?

最佳答案

除了明显的拼写错误(我确定您指的是 QScrollArea),我看不出您发布的内容有任何问题。所以问题一定出在您的代码中的其他地方:可能是缺少布局?为了确保我们在同一页面上,下面的最小脚本对我来说按预期工作:

screenshot

PyQt5

from PyQt5 import QtWidgets

class Window(QtWidgets.QWidget):
def __init__(self, val):
super().__init__()
mygroupbox = QtWidgets.QGroupBox('this is my groupbox')
myform = QtWidgets.QFormLayout()
labellist = []
combolist = []
for i in range(val):
labellist.append(QtWidgets.QLabel('mylabel'))
combolist.append(QtWidgets.QComboBox())
myform.addRow(labellist[i],combolist[i])
mygroupbox.setLayout(myform)
scroll = QtWidgets.QScrollArea()
scroll.setWidget(mygroupbox)
scroll.setWidgetResizable(True)
scroll.setFixedHeight(200)
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(scroll)

if __name__ == '__main__':

app = QtWidgets.QApplication(['Test'])
window = Window(12)
window.setGeometry(500, 300, 300, 200)
window.show()
app.exec_()

PyQt4

from PyQt4 import QtGui

class Window(QtGui.QWidget):
def __init__(self, val):
QtGui.QWidget.__init__(self)
mygroupbox = QtGui.QGroupBox('this is my groupbox')
myform = QtGui.QFormLayout()
labellist = []
combolist = []
for i in range(val):
labellist.append(QtGui.QLabel('mylabel'))
combolist.append(QtGui.QComboBox())
myform.addRow(labellist[i],combolist[i])
mygroupbox.setLayout(myform)
scroll = QtGui.QScrollArea()
scroll.setWidget(mygroupbox)
scroll.setWidgetResizable(True)
scroll.setFixedHeight(200)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(scroll)

if __name__ == '__main__':

app = QtGui.QApplication(['Test'])
window = Window(12)
window.setGeometry(500, 300, 300, 200)
window.show()
app.exec_()

关于Python PyQt 设置滚动区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20041385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com