ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-parent()或super()获取父对象?

2019-11-20 02:57:29  阅读:606  来源: 互联网

标签:qtgui pyside python


我有两节课:

第一个(父类)在方法中实例化子类.
我正在尝试修改子类中的父对象属性. (这些对象是PyQT QWidget).

这是我的父母和孩子课程的开始:

家长:

class ParentClass(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(ParentClass, self).__init__()

        somevar=1200

        self.ChildItem=ChildClass()
        self.ChildItem.Start(somevar)

小孩:

class ChildClass(QtGui.QWidget):
    def Start(self, var):
        super(ChildClass, self).__init__(self)

        self.parent().resize(var,var)

但是,即使没有错误,最后一行也不会产生任何结果.

我已经在几个示例中看到了super()可用于调用父方法,因此我认为这将是我的情况的解决方案.但是,我也无法使其正常工作.

我在理解super()时遇到很多麻烦,当我只想做一件简单的事情时,它总是会陷入复杂的概念,例如多重继承.

解决方法:

这里的问题与超级或继承无关.通过继承,父/子关系位于类之间.但是在您的示例中,ChildClass不继承ParentClass,因此不相关.

但是,Qt中还有另一种父/子关系,那就是实例之间.小部件的构造函数有一个参数,允许您传递对父对象(通常是另一个小部件实例)的引用.但是,该参数是可选的,因此,如果未显式设置该参数,则之后调用parent()只会返回None.

您的示例代码中的特定错误是,永远不会给孩子一个父母.

您的示例如下所示:

class ParentClass(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(ParentClass, self).__init__()    
        # pass in "self" as the parent
        self.ChildItem = ChildClass(self)
        self.ChildItem.Start(1200)

class ChildClass(QtGui.QWidget):
    def Start(self, var):
        self.parent().resize(var, var)

标签:qtgui,pyside,python
来源: https://codeday.me/bug/20191120/2041011.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有