2014-04-12 92 views
1

我試過了這個code PyQt粘貼功能。然後,我已經修改了它像這樣,在初始化函數:激活QShortcut時PyQt粘貼功能TypeError

def __init__(self): 
    .... 
    self.initShortcuts() 
    .... 

這是用Ctrl + V快捷鍵initShortcuts功能代碼段和連接處理的漿狀從剪貼板到QTableWidget的功能:

def initShortcuts(self): 
    self.shortcutPaste = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_V), self) 
    self.shortcutPaste.setContext(Qt.WidgetShortcut) 
    self.shortcutPaste.activated.connect(self.__handlePaste()) 

def __handlePaste(self): 
    clipboard = QtGui.QApplication.instance().clipboard().text() 

    rows = clipboard.split('\n') 
    numRows = len(rows) - 1 
    cols = rows[0].split('\t') 
    numCols = len(cols) 

    for row in xrange(numRows): 
    columns = rows[row].split('\t') 
    for col in xrange(numCols): 
     item = QTableWidgetItem(u"%s" % columns[col]) 
     self.tblTransMatrix.setItem(row, col, item) 
    ... 

但它給我下面的錯誤:

TypeError: connect() slot argument should be a callable or a signal, not 'NoneType' 
+0

看起來'__handlePaste'返回'None'。我們能否看到至少那個功能的其餘部分? –

回答

0

您正試圖一個方法的返回值傳遞給connect,當你要傳遞調用本身(即無覆蓋ut括號):

self.shortcutPaste.activated.connect(self.__handlePaste) 
+0

owh,我忘記刪除括號!謝謝你的幫助 – alfanugraha