Python Pyqt設定スクロール領域
-
21-12-2019 - |
質問
私はそれが400pxを超える成長したら、私のQGroupBox
をスクロール可能にしようとしています。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
を意味していると確信しています)、私は投稿したものに何も悪いことがわかりません。だから問題はあなたのコードの他の場所にある必要があります:欠けているレイアウト?
私たちが同じページにあることを確認するために、この最小限のスクリプトは私にとって期待どおりに機能します:
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(400)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(scroll)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window(25)
window.setGeometry(500, 300, 300, 400)
window.show()
sys.exit(app.exec_())
. 所属していません StackOverflow