0

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'
4

1 に答える 1

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 ファイルでグローバルに定義できます。

于 2013-06-28T08:09:56.390 に答える