在上一个博客中,完成了PyQt的安装,那么接下来就要开始了解如何去写一个界面了。当然,我了解到,可以在designer.exe中描绘好控件,生成.ui的文件,然后再由这个.ui的文件转成python语言。这样显然是比较简单的,但是缺点是不足以了解其中代码的含义。维护,迭代起来比较困难。所以,还需从基础开始。手写代码,生成界面,从而了解各个函数的意义。
正文
写一个界面程序,总共包括这几个步骤:导入模块,创建应用程序对象,创建界面,运行界面
1.创建应用程序对象
为什么要创建这么一个对象呢?我们要进入界面,是不是需要先运行某个APP的图标,其实就是个.exe的执行文件。
那这个.exe的文件就是进入界面的入口,而我们创建的应用程序对象就是这个.exe的文件。一般主要就是打开和关闭的作用。
2.创建界面
当我们双击.exe的图标后,例如QQ,会弹出来一个图形界面来让我们操作,那此时这个界面如何制作?分为如下几步
2.1 创建界面对象
为什么要创建一个界面对象呢?因为我们要对这个界面进行操作。你可以把这一步理解为撕一张白纸,然后这个界面要
做成什么样就可以理解为把这张纸做成什么样。那对纸进行画、裁剪都是对纸进行操作。同样,我们要做界面也是要对
他这个对象进行操作。如果你要打开两个界面,也可以创建两个对象。这就是面向对象编程的思想。
2.2 设置对象
也就是我们要把这个对象做成什么样子,比如多长,多宽,颜色是什么样子,内容是什么样子等等
2.3 展示对象
我们设置好对象的内容后默认是不会展示出来的,是需要调用show这个方法才可以展示出来。
3.运行程序并无限循环,等待用户的操作。
通过捕捉用户的操作来进行下一个逻辑。当用户点击退出按钮后再正常退出。
编写第一个最简单的界面
了解了界面程序的步骤后,就来开始写第一个界面了,程序如下
from PyQt5.Qt import * #PyQt5.Qt其实是包含了例如Qwidget等常用的包,优点是方便初学者,缺点是占用内存
import sys # sys模块,应该都知道,如果不知道可以上python的官网查一下这个包的主要功能
# 1. 创建一个应用程序
app = QApplication(sys.argv)
# 2. 创建界面
window = Qwidget()
# 3.我们先不对界面进行设置,直接展示
window.show()
# 4.展示完之后我们要进入无线循环,等待用户操作
sys.exit(app.exec())
运行结果如下:
我们可以对这个界面进行一些简单的操作,例如最小化、最大化、关闭、拖拽、拉伸等等。但是却没有内容,没有控件来使我们进一步操作。接下来就在这个界面的基础上进行进一步操作。
from PyQt5.Qt import * # PyQt5.Qt其实是包含了例如Qwidget等常用的包,优点是方便初学者,缺点是占用内存
import sys # sys模块,应该都知道,如果不知道可以上python的官网查一下这个包的主要功能
app = QApplication(sys.argv) # 创建一个应用程序的对象
window = QWidget() # 创建一个界面对象
window.setWindowTitle("xxxxxxxxxxx") # 更改顶部标签
window.resize(2000,1500) # size不包括顶层控制栏
window.move(400,200) # 移动窗口位置
label = QLabel(window) # 设置window作为父控件,这样的话就不会出现两个界面,也不会出现顶层控制栏,具体还需深入理解,可以把window去掉尝试运行,查看运行结果,自然会明白
label.setText("test") # 在界面下添加文本
label.move(960,730) # 移动文本位置
window.show() # 窗口展示
sys.exit(app.exec())
"""
开始执行应用程序,并进入消息循环
app.exec()函数是让主系统进入无限循环
sys.exit()是让程序退出的函数,可以给这个函数传递参数。例如:sys.exit(0),给这个函数传递一个0,
当退出码为0的时候,表示正常用户退出,如果非零的话就表示程序内部出错退出。所以app.exec()里面是有
一个机制的,当用户点击X正常退出的时候,就会给app.exec()函数返回0。
"""
运行:
这一章需要理解的地方使子控件和父控件的关系,需要多尝试,自己领悟。后面基本上就是对控件的优化,使界面变得美观,然后再增加交互的内容。