pyqt5 fristwindow(代码结构)
GitHub连接:
本专栏所有源代码的GitHub直通车
关于pyqt5的特点以及和QT5的联系和区别就不讲了,只有专业开发的大佬可能才会说的清楚一点
首先需要先下载PYQT5模块
用的是镜像网下载的,网速不好的时候需要在后面设置一下timeout,不然很有可能下载失败(因为包比较大)
pip install pyqt5 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
代码
from PyQt5 import QtWidgets##从 PyQt 库导入 QtWidget 通用窗口类
import sys
class mywindow(QtWidgets.QWidget):#继承 QtWidgets.QWidget 类方法
def __init__(self):
super(mywindow,self).__init__()
def maingui():
app = QtWidgets.QApplication(sys.argv)##pyqt 窗口必须在 QApplication 方法中使用
window = mywindow()#实例化对象
window.show()#显示窗口
sys.exit(app.exec_())#启动事件循环
if __name__ == "__main__":
print("haoming Hu welcome!")
maingui()
我这里是直接使用了常用的面向对象编程的方式,其实在学习QT的时候,最先让人迷惑的一个问题就是QT的类,因为QT的类实在是太多了,但是也是有规律的,而且还要理解这些类之间的继承关系以及继承方式,很多时候都是使用到了多态。
#从 PyQt 库导入 QtWidget 通用窗口类和sys模块
from PyQt5 import QtWidgets
import sys
maingui()这个可以放在__main__下面执行,我习惯是把它写成一个函数的形式,到现在为止,qt5的编程方式和tkinter都非常的相似。
接下来是重新写一个类,类里面需要继承QtWidgets.QWidge类方法,在自己新建类的__init__函数中需要进行初始化,以前学的super。
这个的__init__函数相当于C++类里面的构造函数,也就是说当我用这个类去实例化一个对象的时候,这个对象会自动完成的一些初始化的工作。
关于super:
菜鸟教程是这样说的:
C语言中文网的解释是:
Python 中子类会继承父类所有的类属性和类方法。严格来说,类的构造方法其实就是实例方法,因此毫无疑问,父类的构造方法,子类同样会继承。
但我们知道,Python 是一门支持多继承的面向对象编程语言,如果子类继承的多个父类中包含同名的类实例方法,则子类对象在调用该方法时,会优先选择排在最前面的父类中的实例方法。显然,构造方法也是如此。
我理解就是如果自己有构造函数,也继承了父类的构造函数,这个时候应该会有一个调用优先级。在这里我不是很明白,这个我就是把它当成一个格式,照着写而已。
super(mywindow,self).__init__()#应该是调用了父类的构造方法
class mywindow(QtWidgets.QWidget):#继承 QtWidgets.QWidget 类方法
def __init__(self):
super(mywindow,self).__init__()
程序框架:
app = QtWidgets.QApplication(sys.argv)##pyqt 窗口必须在 QApplication 方法中使用
window = mywindow()#实例化对象 mywindow是自己新建的类,继承于QtWidgets.QWidget
window.show()#显示窗口
sys.exit(app.exec_())#启动事件循环
这些必要性的东西就不解释了,在这个框架里面,我们关心的东西是用我们自定义类实例化出来的对象,我们操作的对象也是这个实例化对象。
补充:对 name == “main”:的理解 对于JAVA、C++、C的程序来说,程序的入口就是mian函数。python
作为一种解释性的脚本语言,Python代码是从模块顶行运行的。一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import 到其他的 python 脚本中被调用(模块重用)执行。
if name == ‘main’: 的作用就是控制这两种情况执行代码的过程,在 if name == ‘main’:
下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而 import 到其他脚本中是不会被执行的。
程序运行结果:
本文地址:https://blog.csdn.net/weixin_44296793/article/details/111061006
上一篇: springBoot开发小工具
下一篇: Vue中props用法介绍