QT基础学习day1

news2024/12/26 19:18:17

一,QT介绍

1.1,什么是 Qt

Qt 是一个跨平台的 C++\python图形用户界面应用程序框架。

它为应用程序开发者提供建立艺术级图形界面所需的所有功能。

它是完全面向对象的,很容易扩展,并且允许真正的组件编程。

1.1 ,PyQt6简介

1> PyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是最强大的库之一。

2> PyQt实现了一个Python模块集。它有超过300类,将近6000个函数和方法。它是一个多平台的工具包,可以运行在所有主要操作系统上,包括UNIX,Windows和Mac。

3> PyQt采用双许可证,开发人员可以选择GPL和商业许可。在此之前,GPL的版本只能用在Unix上,从PyQt的版本4开始,GPL许可证可用于所有支持的平台。最新版本是6

4> 因为可用的类有很多,他们被分成几个模块。 QtCore模块包含核心的非GUI功能。该模块用于时间、文件和目录、各种数据类型、流、网址、MIME类型、线程或进程。

5> QtGui模块包含图形组件和相关的类,例如按钮、窗体、状态栏、工具栏、滚动条、位图、颜色、字体等。QtNetwork模块包含了网络编程的类,这些类允许编写TCP/IP和UDP的客户端和服务器,他们使网络编程更简单,更轻便。QtXml包含使用XML文件的类,这个模块提供了SAX和DOM API的实现。QtSvg模块提供显示的SVG文件的类。

二、PyQt6程序入门实例

1】QApplication 类专门为QGuiApliaction类提供QWidget的应用程序所需要的一些功能,它可以处理小部件的特定初始化和结束。

2】QWidget类是所有Qt Gui界面类的基类

#将QT的应用程序类  窗口类导入进来
from PyQt6.QtWidgets import QApplication,QWidget

#sys是Python自带的模块 主要用来处理Python环境和运行一些功能的
import sys

#封装一个我的窗口类 继承于QWidget类
class MyWidget(QWidget):
    #显性定义出构造函数
    def __init__(self):
        #调用父类的初始化方法 完成父类的初始化
        super().__init__()


if __name__ == "__main__":
    #用应用程序类实例化一个应用程序对象
    app = QApplication(sys.argv)  #一个程序中 有且仅有一个应用程序对象

    #用我的窗口类 实例化一个我的窗口
    myWidget = MyWidget()

    #显示我的窗口   窗口默认不显示 需要调用show函数
    myWidget.show()

    #让应用程序进入 阻塞状态  消息循环
    sys.exit(app.exec())

三、求出当前窗口的大小

#求出当前窗口的大小
print(myWidget.size())  #宽 高
print(myWidget.size().width()) #宽
print(myWidget.size().height()) #高

print(myWidget.width()) #宽
print(myWidget.height()) #高

print(myWidget.geometry().width()) #宽
print(myWidget.geometry().height()) #高

四、窗口的尺寸、标题、背景颜色等相关设置

import sys

from PyQt6.QtCore import Qt
from PyQt6.QtGui import QIcon
from PyQt6.QtWidgets import QApplication, QWidget


class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('我的窗口')
        #窗口图标
        self.setWindowIcon(QIcon('qq.png'))
        #背景颜色
        self.setStyleSheet('background-color: rgb(64, 143, 168);')
        #窗口大小
        self.resize(540, 400)
        #固定窗口大小
        self.setFixedSize(540, 400)
        #纯净窗口,去头部
        #枚举类型
        self.setWindowFlags(Qt.WindowType.FramelessWindowHint)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    myWindow = MyWindow()
    myWindow.show()
    sys.exit(app.exec())

图片位置可以自定义,也可以放运行文件夹中直接调用

图片在其他位置时使用文件地址

 self.setWindowIcon(QIcon("C:\\Users\\admin\\Desktop\\recent\\pictrue\\pictrue\\qq.png"))

 五、常用类(组件)的使用

5.1 按钮类 QPushButton

import sys

from PyQt6.QtGui import QIcon
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton


#封装我的窗口类
class MyWidget(QWidget):
    #构造函数
    def __init__(self):
        #初始化父类
        super().__init__()

        self.resize(600,400)

        #创建第一个按钮
        btn1 = QPushButton()  #无参构造
        #btn1.show(),只会让组件独立显示
        #如果想让组件依赖于窗口显示  则需要给组件设置父组件(父对象)
        btn1.setParent(self)
        #设置文本
        btn1.setText("第一个按钮")
        #设置背景颜色
        btn1.setStyleSheet("background-color:green")


        #创建第二个按钮
        btn2 = QPushButton("第二个按钮",self)
        #移动
        btn2.move(100,200)
        #设置图标
        btn2.setIcon(QIcon("qq.png"))

        #创建第三个按钮
        btn3 = QPushButton(QIcon("qq.png"),"第三个按钮",self)
        btn3.move(200,150)
        btn3.resize(140,200)
        #设置按钮是否可用
        btn3.setEnabled(False) #不可用



if __name__ == "__main__":
    app = QApplication(sys.argv)

    myWidget = MyWidget()

    myWidget.show()

    sys.exit(app.exec())

 5.2 行编辑器类 QLineEdit

import sys

from PyQt6.QtGui import QIcon
from PyQt6.QtWidgets import QApplication, QWidget, QLineEdit


#封装我的窗口类
class MyWidget(QWidget):
    #构造函数
    def __init__(self):
        #初始化父类
        super().__init__()

        self.resize(600,400)

        #创建第一个行编辑器
        edit1 = QLineEdit()
        edit1.setParent(self)
        edit1.resize(200,50)

        #创建第二个行编辑器
        edit2 = QLineEdit(self)
        edit2.move(300,200)
        #回显模式的设置
        edit2.setEchoMode(QLineEdit.EchoMode.Password)

        #创建第三个行编辑器
        edit3 = QLineEdit("张三",self) #默认文本
        edit3.move(400,300)

        #创建第四个行编辑器
        edit4 = QLineEdit(self)
        edit4.move(500,400)
        #设置占位
        edit4.setPlaceholderText("手机号/QQ号码/邮箱")


if __name__ == "__main__":
    app = QApplication(sys.argv)

    myWidget = MyWidget()

    myWidget.show()

    sys.exit(app.exec())


 5.3 标签类 QLabel

一般用来显示文本或者图片的。

import sys

from PyQt6.QtGui import QIcon, QPixmap, QMovie
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QPushButton


#封装我的窗口类
class MyWidget(QWidget):
    #构造函数
    def __init__(self):
        #初始化父类
        super().__init__()

        self.resize(600,400)

        #创建第一个标签
        lab1 = QLabel()
        lab1.setParent(self)
        lab1.resize(100,100)
        lab1.move(300,300)
        lab1.setStyleSheet("background-color:green")

        # 创建第二个标签
        lab2 = QLabel("我是一个标签",self)
        lab2.resize(100, 100)
        lab2.move(500, 300)

        # 创建第三个标签
        lab3 = QLabel(self)
        lab3.resize(300, 100)
        lab3.move(200, 200)
        #设置图片
        lab3.setPixmap(QPixmap("logo.png"))
        #设置自动适应
        lab3.setScaledContents(True)

        #创建第四个标签
        lab4 = QLabel(self)
        lab4.resize(600,200)
        lab4.setStyleSheet("background-color:green")
        #实例化一个动图对象  动图类 QMovie
        mv = QMovie("zz.gif")
        #将动图设置到标签中
        lab4.setMovie(mv)
        #让动图动起来
        mv.start()
        #自动适应
        lab4.setScaledContents(True)

        #按钮类
        btn1 = QPushButton("登录",self)
        btn1.move(100,500)
        btn1.resize(80,30)
        #去尖角使方形变圆润,下面是四个角切除半径为3的圆弧,
        btn1.setStyleSheet("background-color:green;border-radius:3px;color:white")

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

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

相关文章

LabVIEW内燃机气道试验台测控系统

基于LabVIEW软件开发的内燃机气道试验台测控系统主要应用于内燃机气道的性能测试和数据分析,通过高精度的测控技术,有效提升内燃机的测试精度和数据处理能力。 项目背景 随着内燃机技术的发展,对其气道性能的精准测量需求日益增加。该系统通…

MAUI APP开发蓝牙协议的经验分享:与跳绳设备对接

在开发MAUI应用程序时,蓝牙协议的应用是一个重要的环节,尤其是在需要与外部设备如智能跳绳进行数据交换的场景中。以下是我在开发过程中的一些经验和心得,希望能为你的项目提供帮助。 1. 蓝牙协议基础 蓝牙协议是无线通信的一种标准&#x…

centos7调用so库无响应

这里使用centos7部署一个springboot项目调用so库函数时,无任何响应与输出、也无任何报错信息。以下是我使用的服务器信息: 解决方法: 这里我先直接说下解决方法。有效的解决方法是将你的 so 库文件上传至服务器的 lib 目录中,并对…

使用 PDF API 合并 PDF 文件

内容来源: 如何在 Mac 上合并 PDF 文件 1. 注册与认证 您可以注册一个免费的 ComPDFKit API 帐户,该帐户允许您在 30 天内免费无限制地处理 1,000 多个文档。 ComPDFKit API 使用 JSON Web Tokens 方法进行安全身份验证。从控制面板获取您的公钥和密钥&…

多线程相关案例

目录 1. 单例模式 1) 饿汉模式 2) 懒汉模式 2. 阻塞队列 1) 阻塞队列的特性 2) 模拟实现阻塞队列 3. 定时器 4. 线程池 1) ThreadPoolExecutor 类 2) 模拟实现线程池 1. 单例模式 单例模式是最经典的设计模式之一。 单例模式,顾名思义,就是这…

【PyQt入门】麦当劳会员登录页面实战

PyQt思维导图: 效果图如下: 设计页面包含:图标(含动图gif),窗口logo,title,文本框,按钮 素材图如下: 完整代码以及标注如下: # 导入必要的PyQt6…

中断,定时器相关内容

中断,定时器相关内容 单片机中断什么是单片机的中断中断嵌套中断的优点中断结构中断相关寄存器中断优先级IP中断号中断响应条件中断使用实例在这里插入代码片 定时器CPU 时序的有关知识定时器原理定时计数结构定时/计数器的寄存器定时器配置功能实现 单片机中断 高位…

五层网络协议(封装和分用)

目录 七层网络协议五层网络协议封装1.应用层2.传输层3.网络层4.数据链路层5.物理层 分用1. 物理层2.数据链路层3.网络层 IP 协议4.传输层 UDP 协议5.应用层 七层网络协议 网络通信过程中,需要涉及到的细节,其实是非常非常多的,如果要有一个协…

在鲲鹏麒麟服务器上部署MySQL主从集群

因项目需求需要部署主从MySQL集群,继续采用上次的部署的MySQL镜像arm64v8/mysql:latest,版本信息为v8.1.0。计划部署服务器192.168.31.100和192.168.31.101 部署MySQL主节点 在192.168.31.100上先创建好/data/docker/mysql/data和/data/docker/mysql/l…

一款支持80+语言,包括:拉丁文、中文、阿拉伯文、梵文等开源OCR库

大家好,今天给大家分享一个基于PyTorch的OCR库EasyOCR,它允许开发者通过简单的API调用来读取图片中的文本,无需复杂的模型训练过程。 项目介绍 EasyOCR 是一个基于Python的开源项目,它提供了一个简单易用的光学字符识别&#xff…

C++学习日记---第16天

笔记复习 1.C对象模型 在C中,类内的成员变量和成员函数分开存储 我们知道,C中的成员变量和成员函数均可分为两种,一种是普通的,一种是静态的,对于静态成员变量和静态成员函数,我们知道他们不属于类的对象…

如何搭建JMeter分布式集群环境来进行性能测试

在性能测试中,当面对海量用户请求的压力测试时,单机模式的JMeter往往力不从心。如何通过分布式集群环境,充分发挥JMeter的性能测试能力?这正是许多测试工程师在面临高并发、海量数据时最关注的问题。那么,如何轻松搭建…

人工智能-卷积神经网络(学习向)

一.概述; 卷积神经网络(Convolutional Neural Network, CNN)是一种专门用于处理具有类似网格结构的数据(如图像)的深度学习模型。 主要用于处理机器视觉任务。 主要功能; 1.图像分类 2.目标检测 3.图像分割…

一些基于宏基因组的巨型病毒研究

Introduction 上次已经介绍了巨型病毒的一些基本内容,也讲到了不依赖培养的方法是从环境样本中发现巨型病毒基因组成的不可或缺的工具。可以通过基因组解析宏基因组学来从环境序列数据中获取 NCLDV 基因组并进行深入研究如功能基因,宿主,进化…

【Django-xadmin】

时间长不用,会忘的系列 1、Django-xadmin后台字段显示处理 主要是修改每个模块下adminx.py文件 代码解释:第1行控制表单字段显示第2行控制列表字段显示第3行控制搜索条件第4行控制过滤条件第5行支持单个或多个字段信息修改第6行列表分页,每页显示多少行…

深入浅出体验AI生图产品Dall-E

DALL-E是由OpenAI开发的一种革命性的AI图像生成工具,能够根据文本描述生成图像。它的名字灵感来源于著名画家萨尔瓦多达利(Salvador Dal)和皮克斯动画电影中的角色瓦力(WALL-E),这暗示了其在艺术创造力与技…

域名解析系统 DNS

1.域名系统概述 用户与互联网上某台主机通信时,必须要知道对方的IP地址。然而用户很难记住长达32 位的二进制主机地址。即使是点分十进制地址也并不太容易记忆。但在应用层为了便于用户记忆各种网络应用,连接在互联网上的主机不仅有P地址,而…

学习ASP.NET Core的身份认证(基于Session的身份认证3)

开源博客项目Blog中提供了另一种访问控制方式,其基于自定义类及函数的特性类控制访问权限。本文学习并测试开源博客项目Blog的访问控制方式,测试程序中直接复用开源博客项目Blog中的相关类及接口定义,并在其上调整判断逻辑。   首先是接口A…

十六(AJAX3)、XMLHttpRequest、Promise、简易axios封装、案例天气预报、lodash-debounce防抖

1. XMLHttpRequest 1.1 XMLHttpRequest-基本使用 /* 定义:XMLHttpRequest(XHR)对象用于与服务器交互。通过 XMLHttpRequest 可以在不刷新页面的情况下请求特定 URL,获取数据。这允许网页在不影响用户操作的情况下,更…

【QT】音乐播放器demo

1、使用设计师模式绘制ui界面 添加QPushButton并设置大小,ctrl鼠标拖动复制相同的组件。 添加icon //ps:icon下载网站 设置按钮无边框并设置鼠标悬停颜色: 修改QWidget样式表,添加: *{ border:none; } QPushBu…