PyQt5、Pyside2学习---02

news2024/11/24 2:33:27

1.界面布局

我们最常用的 Layout布局 有4种,分别是

  • QHBoxLayout 水平布局
  • QVBoxLayout 垂直布局
  • QGridLayout 表格布局
  • QFormLayout 表单布局

2.调整控件位置和大小

调整layout中控件的大小比例:

可以通过设定控件的sizePolicy来调整,

调整控件间距:

要调整控件上下间距,可以给控件添加layout,然后通过设定layout的上下的padding margin 来调整间距

调整控件次序

3. 使用Layout:

from PySide2 import QtWidgets

hl = QtWidgets.QHBoxLayout()
vl = QtWidgets.QVBoxLayout()
gl = QtWidgets.QGridLayout()


或者:
from PySide2.QtWidgets import QHBoxLayout,QVBoxLayout,QGridLayout

hl = QHBoxLayout()
vl = QVBoxLayout()
gl = QGridLayout()

(1).要在layout中添加控件,使用其 addWidget 方法。

(2).要在layout中添加其它的layout作为 内部layout,使用其 addLayout 方法。

from PySide2 import QtWidgets

class Qt_Layout(QtWidgets.QWidget):

    def __init__(self):
        super(Qt_Layout, self).__init__()
        button1=QtWidgets.QPushButton('按钮1',self)
        button2 = QtWidgets.QPushButton('按钮2', self)
        button3 = QtWidgets.QPushButton('按钮3', self)

        #第一个布局:
        h1=QtWidgets.QHBoxLayout()
        h1.addWidget(button1)
        h1.addWidget(button2)
        h1.addWidget(button3)


        textEdit=QtWidgets.QPlainTextEdit(self)
        #添加垂直布局
        layout=QtWidgets.QVBoxLayout()
        layout.addWidget(textEdit) #添加内部组件
        layout.addLayout(h1) #添加子布局


        # 指定容器控件自身使用的layout
        self.setLayout(layout)

app=QApplication([])
layout=Qt_Layout() #直接实例化这个类;
layout.resize(400,400)
layout.show()
app.exec_()

4.实战:

设置中心窗口:

 centralwidget=QtWidgets.QWidget()
 self.setCentralWidget(centralwidget)
from PySide2 import QtWidgets
import sys
"""
窗口2
"""
class window2(QtWidgets.QMainWindow):

    def __init__(self):
        super(window2, self).__init__()

        self.setWindowTitle("窗口2")

        centralwidget=QtWidgets.QWidget()
        self.setCentralWidget(centralwidget)

        button=QtWidgets.QPushButton("按钮2")
        grid=QtWidgets.QGridLayout(centralwidget)
        grid.addWidget(button)


class MainWindow(QtWidgets.QMainWindow):

    def __init__(self):
        super(MainWindow, self).__init__()
        self.setWindowTitle("窗口1")

        centralwidget=QtWidgets.QWidget()
        self.setCentralWidget(centralwidget)

        button=QtWidgets.QPushButton("打开窗口")
        button.clicked.connect(self.open_new_window)

        grid=QtWidgets.QGridLayout(centralwidget)
        grid.addWidget(button)#添加新的控件;


    def open_new_window(self):

        #实例化一个窗口;
        self.window2=window2()
        self.window2.resize(300,300)
        self.window2.show()
        # self.window2.close() #关闭窗口;

if __name__ == '__main__':

    app=QtWidgets.QApplication(sys.argv)
    window=MainWindow()
    window.resize(400,400)
    window.show()
    sys.exit(app.exec_())

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

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

相关文章

kafka多用户访问权限配置指导

一、场景描述 现场业务由于多厂商集成,共享数据需要,需对接当前kafka集群,为做到类似租户隔离的功能,需要开启kafka的权限控制和动态用户管理功能,实现不同厂商访问被授权的合法资源,消费者账号只能消费数据,生产者账号只能生产数据。 二、控制方式 Kafka 有三种认证模…

VSCode查看和编辑远程服务器的代码

在嵌入式开发过程中,很多时候代码都是放在编译服务器上,并给每个项目成员分配一个账号。这时候访问代码,可以通过 Samba 服务器将代码目录挂载到本地,再通过 VSCode 去打开服务器的代码。 但是,这时候我经常碰到通过 …

vue项目 解决el-table自适应高度,vue页面不显示多条滚动条,超出的部分让el-table内部出现滚动条

一、需求 后台管理系统:最常见的页面都是由—>左侧菜单、头部tabView页签、主体数据渲染页面(AppMain);而一般AppMain页面又分为: 搜索区域、table数据(分页),可能也会存在底部&a…

编译原理实验1——词法分析器的Java实现

一、 实验目的 设计并实现一个PL/0语言(或其它语言的子集,如C语言的子集)的词法分析程序,加深对词法分析原理的理解。 二、实验原理 词法分析是从左向右扫描每行源程序的符号,拼成单词,换成统一的机内表示形式——TOKEN字,送给…

由浅入深MFC学习摘记--第四部分上

目录 第八章 Document-View结构为什么使用Document-View结构DocumentviewDocumentFrameDocumentTemplateCDocTemplate、CDocument、CView、CFrameWnd 之间的关系 Document - 数据结构设计容器选用范例修改线条与点 View-重绘与编辑代码修改View 的重绘鼠标消息处理类向导 Seria…

手推FlinkML2.2(三)

SQLTransformer(SQL转换器)是一种数据预处理方法,允许您使用SQL语句对数据进行转换和操作。SQL转换器通常用于数据清洗、特征工程和数据聚合等任务,以提高数据分析和机器学习模型的性能。它可以与各种数据处理和存储系统&#xff…

后端大厂面试总结大全六

目录: 1、Transactional注解控制事务有哪些不生效的场景2、MySQL的优化 1、Transactional注解控制事务有哪些不生效的场景 数据库引擎不支持事务数据源没有配置事务管理器没有被spring管理方法不是public的同一个类中方法调用,导致Transactional失效 举…

2023云数据库技术沙龙MySQL x ClickHouse专场成功举办

4月22日,2023首届云数据库技术沙龙 MySQL x ClickHouse 专场,在杭州市海智中心成功举办。本次沙龙由玖章算术、菜根发展、良仓太炎共创联合主办。围绕“技术进化,让数据更智能”为主题,汇聚字节跳动、阿里云、玖章算术、华为云、腾…

gitee教程

二、安装git 要使用gitee,需要先安装git工具。git工具下载:Git - Downloadshttps://git-scm.com/downloads 下载好后,检查是否真的下载了: 三、登录gitee 我们先在 gitee上注册账号并登录。gitee官网:Gitee - 企业级 DevOps 研…

LINUX SVN 新建项目

从第三方代码创建代码库: 1、通过客户端进入服务端 2、在对应的目录创建新的项目/目录 在对应的目录右击 :creat folder... 例:创建testSvn 3、在客户端checkout(co) testSvn 4、将第三方源码(srcTest)拷贝到客户端下的对应路径 防止L…

Redis缓存更新策略

缓存更新是redis为了节约内存而设计出来的一个东西,主要是因为内存数据宝贵,当我们向redis插入太多数据,此时就可能会导致缓存中的数据过多,所以redis会对部分数据进行更新,或者把他叫为淘汰更合适。 1.缓存更新三种策…

Windows 自带环境变量

目录 Windows自带环境变量说明Windows自带环境变量总结 所谓 Windows 环境变量,指的是 Windows 指定操作系统工作环境的一些设置选项或属性参数,比方说指定系统文件夹或临时文件夹的位置等。与常量相比,一个环境变量往往由变量名称和变量值组…

深入了解Android系统中的音视频编解码器:MediaCodec

Media内核源码 Media内核是Android系统中负责音视频处理的核心模块,包括音视频采集、编解码、传输、播放等功能。Media内核源码位于Android源码树的/frameworks/av目录下,主要包括以下模块: media/libstagefright:包含了Media F…

设计模式——组件协作模式之策略模式

文章目录 前言一、“组件协作” 模式二、Strategy 策略模式1、动机2、模式定义3、代码示例4、结构 要点总结 前言 一、“组件协作” 模式 现代软件专业分工之后的第一个结果是 “框架与应用程序的划分”,“组件协作” 模式通过晚期绑定,来实现框架与应用…

【内网】WebStorm搭建Vue环境

文章目录 安装node.js和npm1、 Node.js和npm简介2、下载Node.js3、安装Node.js4、检查是否安装成功5、环境配置(很重要!)6、配置内网离线库 安装WebStorm并运行Vue项目1、新建项目2、测试 安装node.js和npm 1、 Node.js和npm简介 简单的说 …

阿里云服务器-Linux

说明:自己想玩一下服务器,记录一下服务器安装的环境以及软件。包括JDK,Mysql,tomcat等。 一:JDK篇 服务器上也是需要安装JDK环境的,跑不掉的。阿里云服务器提供了命令安装,固定安装目录自动配…

【Jmeter】Oracle数据迁移,批量插入测试数据~

前言~1.准备事项1.1 梳理脚本 2.动起手来2.1 了解 JDBC Connection Configuration2.2 配置 JDBC请求 3.生成测试链路3.1 获取表主键信息3.2 获取目标表表结构3.3 拼接数据并生成sql3.4 插入数据 4.优化脚本(主键信息4.1 添加Beshell后置处理器4.2 优化拼接数据请求&…

C++类与对象——this指针

文章目录 概述this指针的引出this指针的特性将this指针用于多个对象的比较this指针可以为空吗? 概述 本篇博客主要讲解C类和对象模块中的this指针的知识,将会深入探究this指针的使用细节即使用时需要注意的点,并且简单讲解一下底层的实现原理…

Maven(五):Maven的使用——依赖的测试

Maven(五):Maven的使用——依赖的测试 前言一、实验六:测试依赖的范围1、依赖范围1.1 compile 和 test 对比1.2 compile 和 provided 对比1.3 结论 二、实验七:测试依赖的传递性1、依赖的传递性1.1 概念1.2 传递的原则…

内网渗透之横向移动rdpwinrmwinrsspnkerberos

0x00 准备 环境:god.org cs上线 win2008web 提权利用ms14-058 抓取hash和明文密码(当获取到其他主机就重复提权和抓取密码) 扫描存活主机,扫描端口 代理转发-转发上线,生成反向连接木马,绑定监听器,上传至web根目录(方…