Python 从另一个类调用函数无法正常工作

Python 从另一个类调用函数无法正常工作,python,events,filter,pyqt,Python,Events,Filter,Pyqt,这对我理解这些活动是如何运作的帮助很大 但我还有一个问题。在一个事件之后,当我想调用一个主类的函数时,它似乎是从Filter类开始的,不幸的是,我无法从Designer制作的文件中获取内容 属性。有些东西什么也不打印。我尝试调用相同的函数,单击signal方法按钮,效果很好 你能帮我做这个吗?你不需要一个单独的课程。任何继承QObject或QWidget的对象都可以,包括QMainWindow 因此,将事件筛选器移动到StartQT4类中,如下所示: class StartQT4(QtGui.Q

这对我理解这些活动是如何运作的帮助很大

但我还有一个问题。在一个事件之后,当我想调用一个主类的函数时,它似乎是从Filter类开始的,不幸的是,我无法从Designer制作的文件中获取内容

属性。有些东西什么也不打印。我尝试调用相同的函数,单击signal方法按钮,效果很好


你能帮我做这个吗?

你不需要一个单独的课程。任何继承QObject或QWidget的对象都可以,包括QMainWindow

因此,将事件筛选器移动到StartQT4类中,如下所示:

class StartQT4(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        # filter the events through self
        self.ui.edit_notes.installEventFilter(self)

    def object_edit_notes(self, w):
        # this will convert a QString to a python unicode object
        something = unicode(self.ui.edit_notes.toPlainText())
        print something

    def eventFilter(self, widget, event):
        if (event.type() == QtCore.QEvent.FocusOut and
            widget is self.ui.edit_notes):
            print 'focus out'
            self.object_edit_notes('edit_notes')
            return False
        return QMainWindow.eventFilter(self, widget, event)

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = StartQT4()
    myapp.show()
    sys.exit(app.exec_())
class StartQT4(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        # filter the events through self
        self.ui.edit_notes.installEventFilter(self)

    def object_edit_notes(self, w):
        # this will convert a QString to a python unicode object
        something = unicode(self.ui.edit_notes.toPlainText())
        print something

    def eventFilter(self, widget, event):
        if (event.type() == QtCore.QEvent.FocusOut and
            widget is self.ui.edit_notes):
            print 'focus out'
            self.object_edit_notes('edit_notes')
            return False
        return QMainWindow.eventFilter(self, widget, event)

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = StartQT4()
    myapp.show()
    sys.exit(app.exec_())