南通网站建设ntwsd,广州手机app软件开发,搜索引擎作弊的网站有哪些,新站seo外包✨✨ 欢迎大家来到景天科技苑✨✨
#x1f388;#x1f388; 养成好习惯#xff0c;先赞后看哦~#x1f388;#x1f388; #x1f3c6; 作者简介#xff1a;景天科技苑 #x1f3c6;《头衔》#xff1a;大厂架构师#xff0c;华为云开发者社区专家博主#xff0c;…
✨✨ 欢迎大家来到景天科技苑✨✨ 养成好习惯先赞后看哦~ 作者简介景天科技苑 《头衔》大厂架构师华为云开发者社区专家博主阿里云开发者社区专家博主CSDN全栈领域优质创作者掘金优秀博主51CTO博客专家等。 《博客》Python全栈前后端开发小程序开发云原生K8S人工智能js逆向App逆向网络系统安全数据分析PyQt5tkinterDjangofastapiflask等框架linuxshell脚本等实操经验网站搭建数据库等分享。 所属的专栏PyQt5桌面应用开发零基础到进阶应用实战 景天的主页景天科技苑 文章目录 1.PyQt5常用模块常用模块介绍 2.PyQt5初体验显示一个窗口1.使用面向过程的编程方法1代码解读2PyQt5程序基本结构解析3pycahrm激活模板设置 2.使用面向对象的编程方法 1.PyQt5常用模块
所有模块参考官方文档https://www.riverbankcomputing.com/static/Docs/PyQt5/module_index.html
比如我们点进去一个模块QtWidgets 进去看一下里面包含了该模块拥有的所有的类
在这里面也可以检索比如不知道某个类属于哪个模块可以搜索
ctrl F搜索
可以看到该类完整的所属路径
常用模块介绍
QtWidgets 包含了一整套UI元素控件用于建立符合系统风格的界面 QtGui 涵盖了多种基本图形功能的类(字体图形图标颜色…) QtCore 涵盖了包的核心的非GUI功能(时间文件目录数据类型文本流链接线程进程…) QtWebKit 浏览器引擎 QtTest 测试 QtSql 数据库操作相关 QtMultimedia QtMultimediaWidgets 多媒体相关
对于初学者我们先直接用Qt模块 Qt 将基本全部模块中的类综合到一个单一的模块中。 好处 不用关心哪个模块包含哪些类了 坏处 很多模块被导入而没有使用占用内存
我们点进去看Qt模块基本将常用的模块都导入进来
2.PyQt5初体验显示一个窗口
1.使用面向过程的编程方法
from PyQt5.Qt import *
import sys
#创建一个应用程序
app QApplication(sys.argv)
#创建一个窗口
window QWidget()
window.setWindowTitle(景天科技苑)
#设置窗口大小
window.resize(500, 500)
#将窗口移动到某个位置move的参数是x,y轴坐标单位是像素
window.move(400, 200)#创建标签标签控件展示到窗口上所以将窗口对象传进去
label QLabel(window)
#设置标签内容
label.setText(Hello JingTian)
label.move(200, 200)#展示窗口
window.show()#开始执行应用程序并进入消息循环
sys.exit(app.exec_())运行效果展示
1代码解读 一个PyQt程序都需要一个应用程序对象 它包含主事件循环在其中来自窗口系统和其它资源的所有事件被处理和调度。 它也处理应用程序的初始化和结束并且提供对话管理。 它也处理绝大多数系统范围和应用程序范围的设置。 app.exec_()意思是让程序进入主循环不要停止 一个没有父对象控件默认不显示必须要调用show()才可以 一个应用程序中可以显示多个顶级控件 如果一个Widget没有父控件则认定为是顶级控件顶级窗口 有标题栏可以设置图标标题 有最大化最小化关闭等操作 如果想要一个控件展示在另外一个控件内部必须要有父子关系 如果两个对象为父子关系那么父对象显示之后一般子对象会自动显示
2PyQt5程序基本结构解析
# 0. 导入需要的包和模块
from PyQt5.Qt import * # 主要包含了我们常用的一些类, 汇总到了一块
import sys# 1. 创建一个应用程序对象
app QApplication(sys.argv)
# print(app.arguments())
#qApp可以从其他模块拿到该模块的app对象是全局的
# print(qApp.arguments())# 2. 控件的操作
# 创建控件,设置控件(大小,位置,样式...),事件,信号的处理
# 2.1 创建控件
# 当我们创建一个控件之后, 如果说,这个控件没有父控件, 则把它当做顶层控件(窗口)
# 系统会自动的给窗口添加一些装饰(标题栏), 窗口控件具备一些特性(设置标题,图标)
#QWidget是空白的窗口
window QWidget()
# window QPushButton()
# window QLabel()# 2.2 设置控件
#设置窗口标题默认标题是python只有顶级控件才可以设置标题栏的标题
window.setWindowTitle(景天科技苑)
#设置窗口大小注意设置的空间尺寸大小不包含上面的标题栏
window.resize(400, 400)# 控件也可以作为一个容器(承载其他的控件)此时的window就是label的父控件
#如果某控件继承父控件则它会单独生成一个窗口。因此要想程序只显示到一个窗口中一般只设置一个父控件其他控件都继承它就行了
#这里表示标签控件放在了window控件里面
label QLabel(window)
label.setText(JingTian)
#子控件无法设置标题设置了也不生效
# label.setWindowTitle(xxxxxxx)
#相对于父控件移动的距离
label.move(160, 150)
#子控件无需调用show方法
# label.show()# 2.3 展示控件
# 刚创建好一个控件之后,(这个控件没有什么父控件), 默认情况下不会被展示,只有手动的调用show()才可以
# 如果说这个控件, 有父控件的,那么一般情况下, 父控件展示之后, 子控件会自动展示这里子控件label也展示了
window.show()# 3. 应用程序的执行, 进入到消息循环
# 让整个程序开始执行,并且进入到消息循环(无限循环)
# 检测整个程序所接收到的用户的交互信息
#sys.exit方法传的参数为状态码表示程序退出时的退出码0表示正常退出非零表示异常退出
#保证程序不会退出不然程序会一闪而退。作为GUI程序用户要在界面操作肯定不能一闪而退
sys.exit(app.exec_())#sys.argv 收集命令行参数的
# 我们的代码, 到时候的执行方式, 右击, 执行 2, 命令行 python 代码名称
# 当别人通过命令行启动这个程序的时候,可以设定一种功能(接收命令行传递的参数, 来执行不同的业务逻辑
# args sys.argv
# print(args)
# if args[1] 1:
# print(xxx)
# else:
# print(ooo)# sys.exit()qApp是个全局变量可以从其他模块拿到该模块的app对象 官方代码
通过打印得知qApp与我们自己创建的app得到的结果一样
3pycahrm激活模板设置
我们看下代码会发现每次通过PyQt5来开发图形化界面程序很多代码都是重复的我们每次都要写一遍对于重复的代码每次都要写一遍很耽误时间 在pycharm中我们可以通过设置模板来简化我们得开发
我们将重复性的代码拷出来
# 0. 导入需要的包和模块
from PyQt5.Qt import * # 主要包含了我们常用的一些类, 汇总到了一块
import sys# 1. 创建一个应用程序对象
app QApplication(sys.argv)# 2. 控件的操作
# 2.1 创建控件
window QWidget()# 2.2 设置控件
#设置窗口标题默认标题是python只有顶级控件才可以设置标题栏的标题
window.setWindowTitle()
#设置窗口大小注意设置的空间尺寸大小不包含上面的标题栏
window.resize(500, 500)# 2.3 展示控件
window.show()# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())然后在pycharm的设置中搜索live找到Live Template
找到python展开。在pyhton目录里面添加活动模板
点击右侧的加号选择 Live Template
Abbreviation 表示我们设置的快捷键 比如qttDescription 填写模板描述信息 然后将我们准备好的模板代码粘贴到Template text中 当我们在python文件中输入qtt时就会自动将我们设置的代码块插入到python文件中
我们还需要插入模板代码后光标定位到需要修改的地方 怎么配置呢 在需要修改的地方。用$符号包裹一个变量
然后点击 下面的Define设置我们这个模板应用到哪些代码中
选择python
然后点击Apply应用点击OK
此时当我们创建python文件后只需要输入qtt按回车就可以将我们设置的模板代码插入进去
并且光标定位到我们设置的位置
添加些控件运行
2.使用面向对象的编程方法
上面面向过程的写法在程序比较小时还是可以的但是如果我们开发的GUI程序较大时采用面向过程的方法则不是那么合适了一是代码比较冗余二是维护起来不太方便三是就是重用价值比较差
面向对象代码如下
from PyQt5.Qt import *#自定义一个类一般是继承我们要创建的顶级控件
class Window(QWidget):#写自己类的init方法def __init__(self):# 当我们继承某个类时需要调用父类构造方法如此才能正常使用父类的一些方法和属性super().__init__()# 设置窗口标题self.setWindowTitle(QLabel项目)self.resize(500, 500)self.setup_ui()# 此处调用一个个UI的方法展示即可def setup_ui(self):self.myqlable()#每个控件可以写一个方法def myqlable(self):#创建控件时要继承父类qlabel QLabel(self)qlabel.setText(景天来了)qlabel.move(200,200)#设置控件样式qlabel.setStyleSheet(background-color: cyan;)if __name__ __main__:import sysapp QApplication(sys.argv)# QWidget控件的父子关系()window Window()# window QWidget()window.show()sys.exit(app.exec_())运行依然能正常显示窗口和组件