我一直试图将一个/多个QGroupBox插入到一个QScrollArea中。
问题是:滚动条没有显示.
这是我的代码:
# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import QWidget
from PyQt5.QtWidgets import QLabel
from PyQt5.QtWidgets import QCheckBox
from PyQt5.QtWidgets import QGroupBox
from PyQt5.QtWidgets import QScrollArea
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QHBoxLayout, QVBoxLayout, QGridLayout
import sys
lst = [u"D", u"E", u"EF", u"F", u"FG", u"G", u"H", u"JS", u"J", u"K", u"M", u"P", u"R", u"S", u"T", u"U", u"V", u"X", u"Y", u"Z"]
class MyApp(QWidget):
def __init__(self):
super(MyApp, self).__init__()
window_width = 1200
window_height = 600
self.setFixedSize(window_width, window_height)
self.initUI()
def createLayout_group(self):
self.groupbox = QGroupBox(u"Group1:")
self.layout_groupbox = QVBoxLayout()
for i in range(len(lst)):
self.item = QCheckBox(lst[i], self.groupbox)
self.layout_groupbox.addWidget(self.item)
self.layout_groupbox.addStretch(1)
self.groupbox.setLayout(self.layout_groupbox)
def createLayout_Container(self):
self.scrollarea = QScrollArea(self)
self.scrollarea.setFixedSize(250, 6000)
self.scrollarea.setWidgetResizable(False)
self.layout_SArea = QVBoxLayout()
self.layout_SArea.addWidget(self.groupbox)
self.layout_SArea.addWidget(self.groupbox) # add groupbox one more to test
self.layout_SArea.addWidget(self.groupbox) # add groupbox one more to test
self.layout_SArea.addStretch(1)
self.scrollarea.setLayout(self.layout_SArea)
def initUI(self):
self.createLayout_group() # load one groupbox
self.createLayout_Container() # load groupbox container
self.layout_All = QVBoxLayout()
self.layout_All.addWidget(self.scrollarea)
self.setLayout(self.layout_All)
self.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyApp()
sys.exit(app.exec_())
我想达到这个效果。(仅用于表示)但是上面的代码没有显示滚动体。
发布于 2017-12-21 10:47:16
您的代码有以下问题:
setWidgetResizable(False)
,内部小部件就会收缩,这是不愉快的。lst = [u"D", u"E", u"EF", u"F", u"FG", u"G", u"H", u"JS", u"J", u"K", u"M", u"P", u"R", u"S", u"T", u"U", u"V", u"X", u"Y", u"Z"]
class MyApp(QWidget):
def __init__(self):
super(MyApp, self).__init__()
window_width = 1200
window_height = 600
self.setFixedSize(window_width, window_height)
self.initUI()
def createLayout_group(self, number):
sgroupbox = QGroupBox("Group{}:".format(number), self)
layout_groupbox = QVBoxLayout(sgroupbox)
for i in range(len(lst)):
item = QCheckBox(lst[i], sgroupbox)
layout_groupbox.addWidget(item)
layout_groupbox.addStretch(1)
return sgroupbox
def createLayout_Container(self):
self.scrollarea = QScrollArea(self)
self.scrollarea.setFixedWidth(250)
self.scrollarea.setWidgetResizable(True)
widget = QWidget()
self.scrollarea.setWidget(widget)
self.layout_SArea = QVBoxLayout(widget)
for i in range(5):
self.layout_SArea.addWidget(self.createLayout_group(i))
self.layout_SArea.addStretch(1)
def initUI(self):
self.createLayout_Container()
self.layout_All = QVBoxLayout(self)
self.layout_All.addWidget(self.scrollarea)
self.show()
输出:
https://stackoverflow.com/questions/47930677
复制