2013-09-26 76 views
-1

我有3個connect functionpyQt和涉及3 signalone slotone widgetQTableWidget的信號有什麼不同?

QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL(_fromUtf8("itemClicked(QTableWidgetItem*)")), 
          lambda: self.materialsInstance.setFilterDict_Insert("TW",self,"imported_party_attributes",0,self.tableWidget.currentItem().row(),self.tableWidget.currentItem().column())) 
    QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL(_fromUtf8("cellChanged(int,int)")), 
          lambda: self.materialsInstance.setFilterDict_Insert("TW",self,"imported_party_attributes",0,self.tableWidget.currentItem().row(),self.tableWidget.currentItem().column())) 
    ###clear cell and remove from dict 
    QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL(_fromUtf8("currentCellChanged(int,int,int,int)")), 
          lambda: self.materialsInstance.setFilterDict_Insert("TW",self,"imported_party_attributes",0,self.tableWidget.currentItem().row(),self.tableWidget.currentItem().column()))#,"currentCellChanged(int,int,int,int))")) 

我沒有與2第一connect function任何問題,但我得到了3TH connect function以下回溯:

Traceback (most recent call last): 
    File "/home/mohsen/codes/amlak/amlak/src/materialsInsertFrame.py", line 244, in <lambda> 
    lambda: self.materialsInstance.setFilterDict_Insert("TW",self,"imported_party_attributes",0,self.tableWidget.currentItem().row(),self.tableWidget.currentItem().column()))#,"currentCellChanged(int,int,int,int))")) 
AttributeError: 'NoneType' object has no attribute 'row' 

我對Signal-Sloting沒有任何想法,你有嗎?

注意: 2第一connect functions工作正常。

我的問題是,什麼是第一個2 signal和最後signal之間的區別是什麼?

回答

1

self.tableWidget.currentItem()如果沒有當前項目,則可以返回None。在使用row()column()作爲結果之前,您必須始終檢查它是否不是無。這個問題與您使用的信號的性質無關。

0

我解決了,信號與QTableWidget的2套:與當前時間

  • 沒有相關的時間

    在第一個選項,我獲得用戶'NoneType' object has no attribute 'row',因爲用戶不小窗口點擊,但在第二個選項,我們不需要時間,沒有得到給定traceback

  • 相關問題