python pyqt和父类
Posted
技术标签:
【中文标题】python pyqt和父类【英文标题】:python pyqt and parent class 【发布时间】:2012-08-08 11:00:49 【问题描述】:class testWidget(QtGui.QWidget):
def __init__(self, parent=None):
super(testWidget, self).__init__(parent)
self.parent = parent
self.something()
def something(self):
self.parent.callme() # self.parent?.... nice?
class testClass():
def __init__(self):
self.widget = testWidget(parent=self)
test = testClass()
在 python(pyqt) 中处理父类的最简洁的方法是什么? 有没有比直接调用 self.parent 更好的方法?
【问题讨论】:
坦率地说,从其子小部件调用父小部件方法是一个坏主意。要么将该方法作为一个通用函数,要么在任何小部件上使用event filter 到catch focusInEvent event。 【参考方案1】:如果你想调用这个小部件父级的方法(如果已经设置),使用QObject.parent():
class TestWidget(QtGui.QWidget):
def __init__(self, parent=None):
super(TestWidget, self).__init__(parent)
def something(self):
self.parent().callMe()
class TestClass(QtCore.QObject):
def __init__(self):
super(TestClass, self).__init__(None)
self.widget = TestWidget(parent=self)
...
def callMe(self): pass
test = TestClass()
【讨论】:
谢谢大家! parent() 是我正在寻找的。我在小部件的 focusInEvent() 上遇到错误,将更新上面的代码 @user1584472,如果您使用了布局,则可能是小部件被重新设置了父级。我猜这不是真正的代码,只是一个模拟? 是的 loadui 等。是的,只是快速显示了它的繁荣。我自己没有在初始化点之后编辑布局self.parent().hello() # gives error in focusInEvent
- 此时打印self.parent()
以了解它是什么以上是关于python pyqt和父类的主要内容,如果未能解决你的问题,请参考以下文章