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

pyqt5 fristwindow(代码结构)

程序员文章站 2022-06-24 17:00:47
关于pyqt5的特点以及和QT5的联系和区别就不讲了,只有专业开发的大佬可能才会说的清楚一点首先需要先下载PYQT5模块用的是镜像网下载的,网速不好的时候需要在后面几个timeout设置,不然很有可能下载失败(因为包比较大)pip install pyqt5 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com代码from PyQt5 import QtWidgets##从 PyQt 库导入 QtWidget 通用窗口...

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:
菜鸟教程是这样说的:
pyqt5  fristwindow(代码结构)
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 到其他脚本中是不会被执行的。

程序运行结果:
pyqt5  fristwindow(代码结构)

本文地址:https://blog.csdn.net/weixin_44296793/article/details/111061006