2013-06-28 17 views
0

我想在PyQt中第一次使用发射。我做了大量的阅读和谷歌搜索,我确信我有这个正确的,但我不断收到如下所示的错误。任何人都可以阐明我做错了什么。PyQt - 尝试使用发射时出现错误

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

我通常只是通过

self.tabsUpdated.emit() 

E.g

定义信号这样

tabsUpdated = Qt.pyqtSignal() 

那么火了

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文件全局定义。

相关问题