欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PyQt5程序基本结构分析

程序员文章站 2022-05-28 11:07:45
...
填坑之前的第一个pyqt5程序

PyQt5程序基本结构分析

1. 导入需要的包和模块

from PyQt5.Qt import *    # 别问为什么这么写,问就是懒,这样做的好处是可以不管什么包都导入,不需要一点点导包,缺点就是占点内存
import sys    
# sys是什么
# 我们的代码,到时候的执行方式,1、右击run去执行,2、命令行Python代码名称

# argv:当别人通过命令行启动这个程序的时候,可以设定一种功能(接收命令行传递的参数来执行不同的业务逻辑)
args = sys.argv
print(args)
if args[1] == '1':
	print("hello world")
else:
	print("hello pyqt")

# exit(退出码),正常退出是0,程序内部错误是其他的错误码,通过传递不同的错误码,可以知道怎么退出的。
sys.exit()

2. 创建一个应用程序对象

app = QApplication(sys.argv)
# 当有很多个文件的时候,想要获取入口文件参数时
print(app.arguments())
print(qApp.arguments())   # qApp是全局变量

3. 控件操作

# 创建控件,设置控件(大小,位置,样式),事件,信号的处理

# 1、创建控件
# 控件创建好后(没有父控件),则把它当作顶层控件(窗口),系统会自动的给窗口添加一些装饰(标题栏),窗口控件具备一些性质(设置标题,图标)
window = QWidget()

# 2、设置控件
window.setWindowTitle("程序基本结构分析") # 设置窗口标题
window.resize(300,150) # 设置窗口尺寸,长宽
w.move(300,300)  # 移动窗口(显示时在哪),长高

# 控件也可以作为一个容器承载其他控件
label = QLabel(window)
label.setText('hello world')
lable.move(100,100)

# 3、展示控件
# 刚创建好一个控件后(没父控件),需要手动展示
window.show()

4. 应用程序的执行,进入到消息循环

# 让整个程序开始执行,并且进入到消息循环(无限循环)
# 监测整个程序所接收到的用户交互信息
sys.exit(app.exec_())

关于 if __name__ == '__main__':
这是个Python的语法,name 是当前模块名,当模块被直接运行时模块名为 main 。这句话的意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行。
可以用作测试,也可以用作模板,
pycharm中,点击setting,找到Editor,点击Live Templates,点击右上角的加号,点击Live Templates。在Abbreviation 处给它起个名字,后面的Description写个介绍,下面的Template text是用来存放代码的地方。
PyQt5程序基本结构分析
如下图,设置的窗口标题不写标题,写$Title$,在下方应该写控件的位置写上$CODE$
PyQt5程序基本结构分析
如下图,在这个位置要写上改为Python,点change就可以PyQt5程序基本结构分析
然后,Apply,OK。
如何使用呢。
新建一个文档,输入刚刚写的名字,然后一个回车就神奇的海螺姑娘帮你把代码拿了出来,然后定位在刚刚的title,当把title写完后,一个回车就到了code的位置,特别神奇。

将面向过程的代码改为面向对象版本(可以理解为界面与逻辑分离)

为什么要改???
不是闲的吃屁,而是减少代码量,清除冗余,方便维护。
如何更改嘞
首先思考需要维护的位置,应该是上面写的设置控件的位置。控件的设置又是通过类来完成的,那么只要在类的内部去添加就可以,但是类又是封装好的,长了脑子的都知道不能随便乱动,那么咋整呢。
通过继承去实现,然后通过__init__方法,再加上super来继承父类的所有方法,以后就只需要在__init__方法内部去写设置就可以了。

from PyQt5.QtWidgets import QApplication, QWidget, QLabel

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(300, 150)
        self.move(300, 300)
        self.setWindowTitle('第一个基于PyQt5的桌面应用')
        self.setup_ui()

    def setup_ui(self):
        label = QLabel(self)
        label.setText('hello world')
        label.move(100, 100)

那么,如何去看这个能不能用,只需要用测试就可以,大家都知道的,,Python语法中 if __name__ == '__main__':这句话通常被用来做测试。

if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

使用的时候,只需要在引入时,引入这个文件就可以。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel

from ui import Window

if __name__ == '__main__':
    # 创建一个QApplication类的实例
    app = QApplication(sys.argv)
    # 创建一个窗口
    window = Window()
    # 显示窗口
    window.show()
    # 进入程序主循环,并通过exit函数确保主循环安全结束
    sys.exit(app.exec_())

运行结果
PyQt5程序基本结构分析

相关标签: pyqt学习