首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将QScrollArea用于一个或多个QGroupBox?

如何将QScrollArea用于一个或多个QGroupBox?
EN

Stack Overflow用户
提问于 2017-12-21 10:25:24
回答 1查看 8.8K关注 0票数 3

我一直试图将一个/多个QGroupBox插入到一个QScrollArea中。

问题是:滚动条没有显示.

这是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- 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_())

我想达到这个效果。(仅用于表示)但是上面的代码没有显示滚动体。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-21 10:47:16

您的代码有以下问题:

  • 您不必向QScrollArea添加布局,您必须传递的是一个小部件,因此您构建的布局必须添加到一个小部件中,并且这个小部件必须设置为QScrollArea。
  • 每次调用createLayout_group时,您都要覆盖类self.groupbox、self.layout_groupbox等的成员,这是不必要的,并且可能导致问题,该方法返回QGroupBox是正确的。
  • 另一个错误是,如果使用setWidgetResizable(False),内部小部件就会收缩,这是不愉快的。
  • 另一个问题是,您不应该设置固定的大小,而应该只设置固定的宽度,如果要设置固定的大小,则应该使滚动条始终可见。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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()

输出:

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47930677

复制
相关文章
愿未来没有 Webpack
现在是 1941 年。你的名字是 Richard Hubbell。你在 CBS 旗下的一个试验性的纽约电视演播室工作。你将要主持一场重大电视新闻广播,这是世界上首批电视节目之一,你还有 15 分钟就要上场了。你知道你一会儿要干嘛吗?
ConardLi
2019/09/10
6570
愿未来没有 Webpack
webpack版本问题_webpack查询有没有安装
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169196.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
6560
Sass/Scss、Less 是什么?
Sass (Syntactically Awesome Stylesheets) 是一种动态样式语言,Sass 语法属于缩排语法,比 css 比多出好些功能 (如变量、嵌套、运算,混入 (Mixin)、继承、颜色处理,函数等),更容易阅读。
CRMEB商城源码
2022/08/02
1.2K0
从webpack到rollup
这种代码读起来相当费劲,先找到_myModule2对应的__webpack_require__id,再找对应的模块定义,最后看该模块exports身上挂了什么东西。模块定义这个部分很讨厌,延长了阅读引用链
ayqy贾杰
2019/06/12
1.5K0
从webpack到rollup
Webpack之before快速创建接口
上次分享了用webpack的express模块快速启动一个服务接口,其实webpack还有HTTP模块也可以快速创建接口,有兴趣的可以去查查。今天要分享的也是基于express,但是是通过webpack的decServer创建的,不存在跨域问题。
wade
2020/04/24
5160
给初学者的Gulp教程(译)
Gulp是一个在你开发web时,帮助你完成几个任务的工具。它经常用来进行一些前端任务,比如:
治电小白菜
2020/08/25
4.4K0
给初学者的Gulp教程(译)
webpack 从入门到放弃
Webpack + ES6 已经成为目前最流行的前端解决方案,本文是 Webpack2 学习教程。
李振
2021/11/26
5910
创建没有按钮的UIAlertView
默认的,UIAlertView都有一个或者多个按钮,如果你想创建没有按钮的UIAlertView,可以使用以下的方法:
EltonZheng
2021/01/26
1.3K0
创建没有按钮的UIAlertView
webpack原理分析
loader原理loader 概念帮助 webpack 将不同类型的文件转换为 webpack 可识别的模块。loader 执行顺序了解执行顺序之前,需要先了解loader的分类pre: 前置 loadernormal: 普通 loaderinline: 内联 loaderpost: 后置 loader执行顺序4 类 loader 的执行优级为:pre > normal > inline > post 。相同优先级的 loader 执行顺序为:从右到左,从下到上。 // 此时loader执行顺序:lo
程序猿川子
2022/06/10
1300
webpack从0到1构建
webpack是一个静态打包工具,根据入口文件构建一个依赖图,根据需要的模块组合成一个bundle.js或者多个bundle.js,用它来展示静态资源
Maic
2022/07/28
1.3K0
webpack从0到1构建
webpack从零搭建开发环境
为了方便也可以这么写,使用 npm run 命令这个命令执行的时候默认会把 node_modules 的.bin 文件放到全局上,执行之后销毁npm run buildnpm run dev
小丑同学
2020/09/21
1.3K0
从零认识webpack4.0,带你走进神秘的webpack
前言: 作为一个现代javascript 应用程序的静态模块打包器,webpack能将各种资源,如js,css, 图片等作为模块来处理,是当下前端工程化的一个很受欢迎的工具,webpack目前最新的版本是4.0,文章将在4.0 的基础上,从使用者的角度,一步步教你认识并搭建一个简单的webpack配置项目,当然webpack的配置和使用较为丰富且复杂。
前端老鸟
2019/07/29
4680
从零认识webpack4.0,带你走进神秘的webpack
关于Parcel你需要知道的所有内容:超快的Web应用打包器
本文最初发布于 Medium 上 freeCodeCamp 的博客站点,经原作者授权由 InfoQ 中文站翻译并分享。 什么?又有一个打包器(bundler)/ 构建工具?是的——果真如此,演化和创新相结合为我们带来了 Parcel: https://parceljs.org/ Parcel 有什么特殊之处,为什么值得关注呢? webpack 要有大量的配置,这样带来的成本就是复杂性——与此相对的,Parcel 带来了简洁性。Parcel 将自己标榜为“零配置”。 Parcel 内置了一个开发服务器
企鹅号小编
2018/02/07
1.1K0
关于Parcel你需要知道的所有内容:超快的Web应用打包器
基于webpack,不使用任何脚手架,创建纯粹的webpack项目
1.新建一个目录,通过 npm init 初始化一个项目,这个时候仅生成一个package.json 文件,如下:
问问计算机
2023/02/24
6980
基于webpack,不使用任何脚手架,创建纯粹的webpack项目
webpack学习(四)extract-text-webpack-plugin插件
二、extract-text-webpack-plugin插件 从 bundle 中提取文本(CSS)到单独的文件 安装 npm install extract-text-webpack-plugin --save-dev  用法 var ExtractTextPlugin = require("extract-text-webpack-plugin"); module.exports = { module: { rules: [ { test: /\.css$/
柴小智
2018/04/10
8900
从Highlight浅谈Webpack按需加载
最近有在使用 highlight.js 做代码的高亮展示,主要是展示对 SQL 语言的处理。看了看 highlight.js 的提供的相关代码
MrTreasure
2018/08/09
2K0
从Highlight浅谈Webpack按需加载
我们为什么从 Webpack 转向 Vite
作者 | Sergei Chestakov 译者 | 王强 策划 | 李俊辰 在 Replit,我们的使命是让更多人轻松编写代码。我们为大家提供了免费的云端计算资源,让人们可以在任何设备上构建应用。如今,React 是 Web 上最流行的应用创建方法之一。但长期以来,React 工具链在 Replit 上跑得都很慢。尽管 JavaScript 生态系统为专业开发人员提供了很多出色的工具,但其中许多最流行的工具(例如 Create React App 和 Webpack)逐渐变得愈加复杂和效率低下。 所幸我们
深度学习与Python
2023/04/01
4330
我们为什么从 Webpack 转向 Vite
创建maven项目没有显示项目结构
有一些同学创建Maven项目尤其是从git库中拉取了Maven项目之后没有显示项目结构,该怎么办??
明明如月学长
2021/08/31
1.1K0
创建maven项目没有显示项目结构
初探webpack之从零搭建Vue开发环境
平时我们可以用vue-cli很方便地搭建Vue的开发环境,vue-cli确实是个好东西,让我们不需要关心webpack等一些繁杂的配置,然后直接开始写业务代码,但这会造成我们过度依赖vue-cli,忽视了webpack的重要性,当遇到一些特殊场景时候,例如Vue多入口的配置、优化项目的打包速度等等时可能会无从下手。当然现在才开始学习vue2 + webpack可能有点晚,毕竟现在都在考虑转移到vue3 + vite了哈哈。
WindRunnerMax
2021/10/20
1.2K1
创建MySQL从库
我们知道Oracle有DataGuard实时备份数据。能够做主备切换,而MySQL也有自己的一套备库方案。称之为主从复制。
全栈程序员站长
2022/07/10
1.6K0

相似问题

告诉角为`styles.css`而不是`styles.scss`服务

38

可以将全局styles.css文件转换为styles.scss吗?

10

我如何在maven原型中实现一个主题?(styles.css、styles.scss等)

111

Angular2 Webpack资产与全球styles.css

12

Webpack建设成功,但styles.css文件风格没有体现出来

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文