PyQt中如何在子部件(child Widget)中调用父部件(parent Widget)中的方法

PyQt中,为了层级管理的方便,多数时候会有子部件和父部件的区分,比如父部件是一个QWidget,子部件是一个QTabWidget,子部件位于父部件之中,子部件是父部件的一个部件。

由父部件获取子部件是很简单的,毋庸赘言。在父部件中创建子部件的时候,就可以用一个变量来绑定该子部件。

但是从子部件获取父部件,好像就没有明确的实现方法了。从网上找到的解决方式,要么是最终结果模棱两可含糊不清,要么干脆就不适用于python语言。

经过几次简单的实验,发现解决方法还是比较简单的,在这里简单的记录一下。

在父部件初始化的时候,定义子部件的时候将self作为父部件传给子部件,大概就是这样:

#self指的是父部件,Interface是子部件的实例化类
#定义一个Interface,即可创建一个子部件并对之进行初始化
self.tab=childWidget.Interface(self)

然后,在子部件中,在初始化的时候,定义一个parent变量,接收父部件传过来的self参数,赋值给parent变量,代码大概就是下面这样:

#self指的是新建的子部件
#parent是父部件传过来的参数
def __init__(self,parent):
    super(Interface,self).__init__()
    self.parent=parent

这样的话,在子部件中,只要用self.parent,就可以获取父部件,然后就可以调用父部件中的属性、方法以及其他的子部件了。

猜你喜欢

转载自blog.csdn.net/esa72ya/article/details/89305924