学习pyqt 继承中self的疑问

article/2025/8/28 8:29:01

前面学习了,面对对象编程,继承,有了一些理解。继续学习pyqt5

看到下面有了一些疑问。 

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIconclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setGeometry(300, 300, 300, 220)self.setWindowTitle('Icon')self.setWindowIcon(QIcon('web.png'))        self.show()if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())

class Example(QWidget)   

Example继承了QWidget的所有遗产

__init__()初始化了父类的__init__(),下面一句self.initUI(),初始化本身的方法 initUI()

在initUI()方法中,self指的到底是谁????这是我的疑问。

self指的是class Example实例化的对象,在这里就是对象ex。

因为Example继承了QWidget的所有遗产,也就是ex也继承了QWidget的所有遗产

        self.setGeometry(300, 300, 300, 220)self.setWindowTitle('Icon')self.setWindowIcon(QIcon('web.png')) 

这三个方法原本属于,QWidget,现在Example,也可以拥有,切可以增加其它的方法,比如 initUI()

重要的是,self指的是实例化后的对象本身。

自己又写了一个例子,帮自己理解一下

class A:def __init__(self):print("A")def f(self):print("f")class B(A):def __init__(self):print("B")super().__init__()self.a()self.f()def a(self):self.f()if __name__ == '__main__':a=B()

对clas B实例化 a=B(),初始化。

 

问题:

这是QT designer产生ui文件转换过来的文件

from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(516, 396)self.layoutWidget = QtWidgets.QWidget(Form)self.layoutWidget.setGeometry(QtCore.QRect(10, 40, 320, 223))self.layoutWidget.setObjectName("layoutWidget")self.gridLayout = QtWidgets.QGridLayout(self.layoutWidget)self.gridLayout.setContentsMargins(0, 0, 0, 0)self.gridLayout.setObjectName("gridLayout")self.textEdit = QtWidgets.QTextEdit(self.layoutWidget)self.textEdit.setObjectName("textEdit")self.gridLayout.addWidget(self.textEdit, 0, 0, 1, 4)self.num_1 = QtWidgets.QPushButton(self.layoutWidget)self.num_1.setObjectName("num_1")self.gridLayout.addWidget(self.num_1, 1, 0, 1, 1)self.num_2 = QtWidgets.QPushButton(self.layoutWidget)self.num_2.setObjectName("num_2")self.gridLayout.addWidget(self.num_2, 1, 1, 1, 1)self.num_3 = QtWidgets.QPushButton(self.layoutWidget)self.num_3.setObjectName("num_3")self.gridLayout.addWidget(self.num_3, 1, 2, 1, 1)self.num_4 = QtWidgets.QPushButton(self.layoutWidget)self.num_4.setObjectName("num_4")self.gridLayout.addWidget(self.num_4, 1, 3, 1, 1)self.retranslateUi(Form)self.num_2.clicked.connect(Form.n_2)self.num_1.clicked.connect(Form.n_1)self.num_3.clicked.connect(Form.n_3)self.num_4.clicked.connect(Form.n_4)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "Form"))self.textEdit.setHtml(_translate("Form", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))self.num_1.setText(_translate("Form", "1"))self.num_2.setText(_translate("Form", "2"))self.num_3.setText(_translate("Form", "3"))self.num_4.setText(_translate("Form", "4"))

 

现在要来编写对应的槽函数,即

        self.num_2.clicked.connect(Form.n_2)self.num_1.clicked.connect(Form.n_1)self.num_3.clicked.connect(Form.n_3)self.num_4.clicked.connect(Form.n_4)

 

首先根据designer,Form,是一个QWidget类,在调用setupUi(self, Form)方法时,需要传入一个对象,属于QWidget类。

但这个类里面还得包括,自定义的四个方法,n_1,n_2,n_3,n_4。

这里可以使用继承,新建一个类aa,继承了两个类,QWidget,Ui_Form

class aa(QtWidgets.QWidget,Ui_Form):def n_1(self):self.textEdit.setText("1")def n_2(self):self.textEdit.setText("2")def n_3(self):self.textEdit.setText("3")def n_4(self):self.textEdit.setText("4")

现在,aa,相当强大不但拥有,QWidget和Ui_Form家族的所有财产,还有自己家的n_1,n_2,n_3,n_4

加入下面的代码,就能运行了。这是我误打误撞写的,虽然是对的,但还有疑问???????????

if __name__=="__main__":import sysapp=QtWidgets.QApplication(sys.argv)b=aa()b.setupUi(b)b.show()sys.exit(app.exec_())
 

这句       b.setupUi(b)          传入的是它本身。让我有点意外,但想想也对,b是aa的实例化,也属于QWidget类。

希望有缘人给予解答,这样写,怎么就对了。


http://chatgpt.dhexx.cn/article/xl2Go3bJ.shtml

相关文章

Python中类函数中self是什么

首先我们来看两组代码运行的结果 代码组一&#xff1a; class C1:def func1():x10print("func1的x&#xff1a;",x)def func2(self):x20print("func2的x&#xff1a;",x)C1.func1() C1.func2()结果如下 代码组二&#xff1a; class C1:def func1():x…

python中return self用法详解

直接上代码来理解return self的用法&#xff01; 示例代码1&#xff1a; class Test(object):def __init__(self):self.age 25def add(self):self.age 1print(self.age)obj Test() obj.add()运行结果&#xff1a; 有时候当我们想对实例对象的方法进行连续调用时&#xff0…

Python——self参数

self 的意思是“自己”,表示的是对象自身,当某个对象调用成员方法的时候,Python 解释器会自动把当前对象作为第1个参数传给 self ,用户只需要传递后面的参数就可以了。 self 参数的应用&#xff1a; #program0706.py self 参数的应用 class Animal:类中未定义构造方法&#x…

php 中self什么意思,php中self的用法是什么

php中self的用法&#xff1a; self是指向类本身&#xff0c;也就是PHP self关键字是不指向任何已经实例化的对象&#xff0c;一般self使用来指向类中的静态变量。 1、self可以访问本类中的静态属性和静态方法&#xff0c;可以访问父类中的静态属性和静态方法。 相关推荐&#x…

纯C++实现24位bmp格式图片的读取和修饰

问题:现有一张bmp图片,要求将它读取到程序中并进行灰度化、水平翻转、模糊、茶色滤镜四种效果的一种,并输出新图片,如下所示: 命令行输入: 其中: 参数1:-b/g/s/r,先后表示blur(模糊),grey(灰度化),sepia(褐色),row reverse(水平翻转) 参数2:源文件名 参数3:新文…

SE78上传BMP格式图片出错,出错信息提示上传的不是BMP格式图片

如下图&#xff0c;导入文件为一BMP图片(红框部分), 然后点击确认键&#xff08;黑框部分&#xff09;。 结果却出错&#xff0c;提示不是BMP文件&#xff0c;如下图红框部分。 很纳闷明明是BMP怎么就提示说不是BMP呢&#xff1f;感觉应该是上传的图片有问题&#xff0c;所以想…

C++读取bmp格式图片

类的格式按照bmp的文件头、信息头、调色板和数据域写好即可 因为图片是按字节读的&#xff0c;所以要强制让编译器不对结构体进行字节对齐&#xff0c;否则会出错 因为bmp格式规定存储时每行的像素数要补齐至4的整数倍&#xff0c;所以读入和写出时要加一些对应的操作 ————…

android 图片格式,常见图片格式详解

做了几年有关图形、图像的工作,对图片格式算是小有经验,在此写成一文章总结下。虽然一开始并不想讲很理论的东西,但写完后发现几乎全是理论,细想一下关于图片格式的知识本身就是理论的东西,囧~~ 那就力求用最简单的方式将这些“理论”讲清楚吧。 常见的图片格式有bmp, jpg…

Qt之生成png/jpg/bmp格式图片

Qt之生成png/jpg/bmp格式图片 一、问题描述二、显示效果三、核心代码示例 一、问题描述 有时候需要把Qt绘制的一些图形保存为png/jpg/bmp格式的图片&#xff0c;下面就根据自己写的一个简单的测试程序来讲解一下Qt中保存图片的方法。本文主要讲解使用Qpainter和QImage组合使用…

MFC详解显示BMP格式图片

本文主要是讲述《数字图像处理》系列栏目中的第一篇文章.主要详细介绍了BMP图片格式,同时使用C和MFC显示BMP格式,主要结合自己的《数字图像处理》课程和以前的项目叙述讲解. 一.BMP图片格式定义 BMP文件格式是Windows操作系统推荐和支持的标准图像文件格式,是一种将内存或显示…

bmp格式说明

bmp24位位图格式 创建bmp24位位图格式的图片 打开Windows系统自带的画图软件&#xff0c;如下&#xff1a; 点击“文件 > 另存为”&#xff0c;在弹出的界面中有4种bmp格式可以选择&#xff0c;如下&#xff1a; 不知道bmp格式是不是只有上面的4种&#xff0c;还是有更多…

如何批量将 bmp 格式图片转换为 png 格式

概要&#xff1a;bmp 格式是纹的操作系统当中非常常见的一种图片格式&#xff0c;这种格式的特点是包含的图像信息较丰富&#xff0c;几乎不进行压缩&#xff0c;所以导致了它存在一个很大的缺点&#xff0c;那就是占用磁盘空间过大&#xff0c;那么我们怎么将 bmp 格式的图片转…

将BMP 格式图片转换为 JPEG 格式【c语言】

源码链接: https://blog.csdn.net/qq_44394952/article/details/122587475?spm1001.2014.3001.5502. 一、任务及目标 利用c语言&#xff0c;通过将 RGB 信息转换为 YCrCb 信息、离散余弦变化、量化和 z 型编码&#xff0c;再进行游程编码和霍夫曼编码&#xff0c;最后进行尾…

如何批量将 bmp 格式图片转换转换为 jpg

概要&#xff1a;png 和 jpg 这两种格式的图片相信大家都非常熟悉&#xff0c;但是 bmp 格式的图片可能大家接触得并没有那么多&#xff0c;bmp 是 Windows 操作系统中的标准图像文件格式&#xff0c;能够被多种 Windows 应用程序所支持&#xff0c;因此格式的图片在 Windows 操…

bmp格式图的解析

文章目录 前言 一、bmp格式图的特点 二、bmp格式图的解析 总结 前言 在图像处理中经常会遇到BMP格式图的解析问题&#xff0c;本文简单介绍了bmp格式图的解析方式&#xff0c;并附上相应的C代码。 一、bmp格式图的特点 bmp图通常由图片的头文件信息和像素数据组成&#xff0c…

R语言与多元线性回归分析计算实例

6.3.7 计算实例 例 6.9 某大型牙膏制造企业为了更好地拓展产品市场&#xff0c;有效地管理库存&#xff0c;公司董事会要求销售部门根据市场调查&#xff0c;找出公司生产的牙膏销售量与销售价格&#xff0c;广告投入等之间的关系&#xff0c;从而预测出在不同价格和广告费用下…

多元线性回归检验

多元线性回归模型通常用来研究一个应变量依赖多个自变量的变化关系&#xff0c;如果二者的以来关系可以用线性形式来刻画&#xff0c;则可以建立多元线性模型来进行分析。 1.t检验 t检验是对单个变量系数的显著性检验&#xff0c;一般看p值&#xff1b; 如果p值小于0.05表示该…

[DataAnalysis]多元线性回归深入浅出-案例+模型假设+参数估计方法+模型评判方法+变量选择+多重共线性问题

一、案例介绍 1、目的&#xff1a;利用上市公司当年的公开财务指标预测来年盈利情况最重要的投资人决策依据。 2、数据来源&#xff1a;随机抽取深市和沪市2002和2003年的500个上市公司样本预测来年的净资产收益率。 3、解释变量包括&#xff1a;资产周转率、当年净资产收益…

基于spss的多元回归分析模型

还是数学建模中的一个小问题&#xff0c;具体概念分析在百度上的大佬说的已经足够详细&#xff0c;在此不再赘述。 链接: 多元回归分析. 我主要根据实例讲解如何通过spss进行建模&#xff0c;并进行模型参数的分析和验证。 打开spss&#xff08;如果遇到打不开的情况&#x…

多元线性回归分析预测法概述

在市场的经济活动中&#xff0c;经常会遇到某一市场现象的发展和变化取决于几个影响因素的情况&#xff0c;也就是一个因变量和几个自变量有依存关系的情况。而且有时几个影响因素主次难以区分&#xff0c;或者有的因素虽属次要&#xff0c;但也不能略去其作用。例如&#xff0…