pyqt QAction странное поведение вызова функции
Я сделал простое окно и добавил меню и панель инструментов. И я получил странное поведение функции, связанной с действием. Вот код:
import os
import sys
import sip
import maya.OpenMayaUI as mui
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import uic
#----------------------------------------------------------------------
def getMayaWindow():
ptr = mui.MQtUtil.mainWindow()
return sip.wrapinstance(long(ptr), QObject)
#----------------------------------------------------------------------
class MainForm(QMainWindow):
def __init__(self):
super(MainForm, self).__init__(getMayaWindow())
self.setGeometry(50,50,600,600)
mdiArea = QMdiArea()
self.setCentralWidget(mdiArea)
self.testAction = QAction(QIcon('ico.png'), '&Test', self)
self.testAction.triggered.connect(self.aaaaa)
self.menubar = self.menuBar()
fileMenu = self.menubar.addMenu('&File')
fileMenu.addAction(self.testAction)
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(self.testAction)
self.statusBar()
def aaaaa(self):
print('test')
#----------------------------------------------------------------------
# window
def cacheWnd():
wnd = MainForm()
wnd.show()
cacheWnd()
когда вы нажимаете меню или значок панели инструментов - соответствующая функция не вызывается. но необходимо создать глобальную функцию вне класса и сделать вызов без себя, как все начинает работать немедленно.
я исправляю строку:
self.testAction.triggered.connect(aaaaa)
и перетащите функцию за пределы класса:
def aaaaa():
print('test')
и все сразу началось, вызывается и работает...
Почему это не работает, пока функция не является членом класса?