pyqt5 QScrollArea组件

news2024/11/24 2:46:50

本示例中,演示了QScrollArea的使用,以及QScrollBar的样式设定,在代码中使用setStyleSheet设置样式,记得要优先设置scrollArea,再设置窗口的样式,不然QScrollBar的样式会不起作用,使用QSS设置没有这个要求。

效果图:

源代码:

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QGuiApplication
from PyQt5.QtWidgets import QDialog, QApplication, QPushButton, QScrollArea


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(644, 488)
        self.verticalLayout = QtWidgets.QVBoxLayout(Form)
        self.verticalLayout.setObjectName("verticalLayout")
        self.scrollArea = QtWidgets.QScrollArea(Form)
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setObjectName("scrollArea")
        self.scrollAreaWidgetContents = QtWidgets.QWidget()
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 624, 468))
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.pushButton = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
        self.pushButton.setObjectName("pushButton")
        self.verticalLayout_2.addWidget(self.pushButton)
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)
        self.verticalLayout.addWidget(self.scrollArea)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.pushButton.setText(_translate("Form", "PushButton"))



class DEMO(QDialog, Ui_Form):
    def __init__(self):
        super(DEMO, self).__init__()
        self.setupUi(self)
        self.resize(955, 625)
        for x in range(30):
            self.scrollAreaWidgetContents.layout().addWidget(QPushButton(f'Button{x}'))

        self.scrollAreaWidgetContents.layout().setContentsMargins(2, 2, 2, 2)
        self.scrollArea.setWidgetResizable(True)

        self.scrollArea.setStyleSheet("""
                    QScrollBar:vertical {
                        border: none;
                        background: #E2E2E2;
                        width: 15px;
                        margin: 10px 0;
                    }
                    QScrollBar::handle:vertical {
                        background: blue;
                        min-height: 20px;
                    }
                    QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical
                    {
                        width: 0px;
                        height: 0px;
                    }
                """)

        self.setStyleSheet("""
                #scrollArea {
                    border: none;
                    border-radius: 6px;
                    padding: 4px;
                    background-color: #ffffff;
                }
                #scrollAreaWidgetContents{
                    background-color: rgb(255,255,255,0);
                }
        """)


if __name__ == '__main__':
    QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
    QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps)
    QGuiApplication.setHighDpiScaleFactorRoundingPolicy(Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
    app = QApplication(sys.argv)
    main_win = DEMO()
    main_win.show()
    sys.exit(app.exec_())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1583393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【讲解下Fiddler的安装和使用】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

基于Java+SpringBoot+Vue文学名著分享系统(源码+文档+部署+讲解)

一.系统概述 随着世界经济信息化、全球化的到来和互联网的飞速发展,推动了各行业的改革。若想达到安全,快捷的目的,就需要拥有信息化的组织和管理模式,建立一套合理、动态的、交互友好的、高效的文学名著分享系统。当前的信息管理…

接口自动化测试(python+pytest+requests)

一、选取自动化测试用例 优先级高:先实现业务流程用例、后实现单接口用例功能较稳定的接口优先开展测试用例脚本的实现二、搭建自动化测试环境 核心技术:编程语言:python;测试框架:pytest;接口请求:requests安装/验证requests:命令行终端分别输入 pip install requests / p…

LMDoply部署实战

使用LMDeoply部署各类开源大模型,进行推理实践。 一. 环境准备 1. 创建Conda环境 studio-conda -t lmdeploy -o pytorch-2.1.2 2. 安装LMDeploy 激活刚刚创建的虚拟环境。 conda activate lmdeploy 安装0.3.0版本的lmdeploy。 pip install lmdeploy[all]0.3.…

媒体邀约专访如何深入的做一篇专访报道?流程分享

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 进行媒体邀约专访并深入撰写一篇专访报道是一个系统性工作,涉及多个环节。以下是一个详细的流程分享: 一、前期准备 确定专访目的与主题:明确专访希…

Python程序设计 列表

教学案例八 列表 1. 计算并显示斐波那契数列 输入n,计算并显示斐波那契数列前n项.一行打印5项,每项显示宽度为6 什么是斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列、 因数学家莱昂纳多斐波那契&#xff…

C++典型例题切入数据存储

一、典例导入 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] {1, 2, 3, 4};char char2[] "abcd";char* pChar3 "abcd";int* ptr1 (int*)malloc(sizeof (int)*4);int* ptr2 …

C语言面试题之返回倒数第 k 个节点

返回倒数第 k 个节点 实例要求 1、实现一种算法,找出单向链表中倒数第 k 个节点;2、返回该节点的值; 示例:输入: 1->2->3->4->5 和 k 2 输出: 4 说明:给定的 k 保证是有效的。实…

新平台上线需要注意哪些?

最近有很多被黑客攻击的老板问我前期平台上线安全防护方面需要注意哪些?下面就给大家讲一下。1、如果前期不打算上高防产品,数据一定要做好备份,否则一旦数据被篡改或者被加密,恢复都是比较困难的,甚至都没有办法恢复。…

亚马逊国际获得AMAZON商品详情 API ,item_get-获得AMAZON商品详情

亚马逊提供了多种API和服务,允许开发者获取商品详情和其他相关信息。然而,直接使用亚马逊的API通常需要遵循一定的步骤和条件,包括注册为亚马逊开发者、创建应用并获取API密钥等。 请求示例,API接口接入Anzexi58 关于你提到的“i…

[Java基础揉碎]System类

1) exit 退出当前程序 2) arraycopy: 复制数组元素,比较适合底层调用,一般使用 Arrays.copyOf完成复制数组(Arrays.copyOf其实底层也是用的System.arraycopy, 本质是一样的) int[] src{1,2,3}; int[] dest new int[3]; System.arraycopy(src, 0, des…

想往智能驾驶方向发展,需要做哪些努力

想往智能驾驶方向发展,需要做哪些努力 附赠自动驾驶学习资料和量产经验:链接 目前自动驾驶主要涉及到以下几个方面: 1.传感器技术(激光雷达,毫米波雷达,摄像头,超声波雷达)&#x…

【笔试】02

TCP TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议 它能够提供以下服务: 可靠传输 通过序列号、确认应答、重传机制等确保数据完整、准确地从发送端传输到接收端。 三次握手: 点对点全双工面向字节流…

final、finally、finalize的区别

final final就是不可变的意思,可以修饰变量、⽅法和类。修饰变量时,这个变量必须初始 化,所以也称为常量。 被final修饰的类不能被继承 如果一个变量被final修饰,就需要初始化。可以在声明的时候赋值,或者在每一个构…

Linux_进程的优先级环境变量上下文切换优先级队列

文章目录 一、进程的优先级二、进程的四个重要概念三、上下文切换四、环境变量查看当前shell环境下的环境变量与内容 五、Linux2.6内核进程调度队列一个CPU拥有一个runqueue优先级活动队列过期队列active指针和expired指针 一、进程的优先级 什么是优先级? 指定一个…

第十一届蓝桥杯省赛真题(C/C++大学B组)

试题A &#xff1a;门牌制作 #include <bits/stdc.h> using namespace std;const int N 100000; int arr[N];int main() {int ans 0,t;for(int i 1;i < 2020;i){t i;while(t > 0){if(t % 10 2) ans;t / 10;}}cout<<ans<<endl;return 0; } 试题B …

返回头节点的问题

当需要对链表进行操作又需要返回头节点时&#xff0c;又可能被更改的节点正是头节点 解决方法&#xff1a; 让一个指针事先指向头节点&#xff0c;然后从该指针开始操作就好了 class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {if(headNULL)ret…

【Linux】make是如何判断可执行文件是否需要重新编译呢?(ACM时间)

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

express操作mysql数据库的方法总结

作为前端&#xff0c;我们无需去考虑数据库的问题&#xff0c;业务场景需要的话&#xff0c;我们可以mock数据&#xff0c;满足暂时的联调场景。但是对于数据库&#xff0c;我们前端可以不用&#xff0c;却不能不了解不懂。所以这篇文章整理下&#xff0c;nodejs框架express中怎…

[闲聊统计]之参数估计是什么?(上)

参数估计是推断统计的重要内容之一。它是在抽样及抽样分布的基础上&#xff0c;根据样本统计量来推断所关心的总体参数。说白了&#xff0c;就是用样本信息来代替总体信息 例如&#xff1a;现在要调查某大学大学生的一个消费情况&#xff0c;假设全校大学生的平均消费金额为 μ…