2013-06-28 16 views
0

Я пытаюсь использовать emit в первый раз в PyQt. Я много читал и искал в Интернете, и я был уверен, что у меня это правильно, но я продолжаю получать ошибки, показанные ниже. Может ли кто-нибудь пролить свет на то, что я делаю неправильно.PyQt - Получение ошибки при попытке использования emit

def checkRiskDescription(obj,form): 
    complete = True 
    if str(form.txtTitle.text()) == "": 
     complete = False 
    if len(str(form.txtOverview.toPlainText())) < 50: 
     complete = False 

    bar = form.tabRiskMain.tabBar() 
    if complete: 
     #Change Risk Description tab to Green 
     bar.setTabTextColor(0,QtGui.QColor(38, 169, 11, 255)) 
     form.btnSave.enabeld = True 
    else: 
     #Change risk Description tab to Red 
     bar.setTabTextColor(0,QtGui.QColor(255, 0, 0, 255)) 
     form.btnSave.enabled = False 

    QtGui.QWidget.emit(QtCore.SIGNAL("tabsUpdated")) 

Здесь ошибка

File "D:\Development\python\PIF2\PIF\risk\risk.py", line 360, in checkRiskDescription 
    QtGui.QWidget.emit(QtCore.SIGNAL("tabsUpdated")) 
TypeError: QObject.emit(SIGNAL(), ...): first argument of unbound method must have type 'QObject' 

ответ

1

Я обычно просто определить сигнал, как этот

tabsUpdated = Qt.pyqtSignal() 

затем запустите его с помощью

self.tabsUpdated.emit() 

например
from PyQt4 import Qt 

class SomeClass(Qt.QObject): 
    tabsUpdated = Qt.pyqtSignal() 
    def __init__(self): 
     Qt.QObject.__init__(self) 

    def something(self): 
     # bla bla loads of nice magic code bla bla 
     self.tabsUpdated.emit() 

Конечно, сигнал может быть определен глобально в вашем файле python.