2012-01-24 51 views
6

使用PyQt4的4.8.6下面的代碼產生錯誤PyQt4的結果的QThread錯誤

的QObject :: startTimer所:QTimer只能有螺紋用於開始使用的QThread

當被用作用於可變QApplication,但如果cpp(或大多數其他)用於變量,則不會產生錯誤。這是PyQt4中的錯誤還是我缺少的東西?

#! /usr/bin/env python 

# This is only needed for Python v2 but is harmless for Python v3. 
import sip 
sip.setapi('QVariant', 2) 

from PyQt4 import QtGui 

#def main(): 

if __name__ == '__main__': 
    import sys 

    if len(sys.argv) > 1: 
     use_a = False 
     print "Don't use a" 
    else: 
     use_a = True 
     print "Use a" 

    if use_a: 
     a = QtGui.QApplication(sys.argv) 
    else: 
     cpp = QtGui.QApplication(sys.argv) 

    model = QtGui.QStandardItemModel(4,2) 
    tableView = QtGui.QTableView() 
    tableView.setModel(model) 

    tableView.show() 
    if use_a: 
     sys.exit(a.exec_()) 
    else: 
     sys.exit(cpp.exec_()) 


#if __name__ == '__main__': 
# main() 

回答

6

這可能不是一個錯誤,因爲這樣。

當Python開始關閉時,對象獲取垃圾回收的順序可能無法預測。您看到的錯誤信息很可能是其中的一個副作用。

這是否會在您的應用程序中造成實際問題?

如果沒有,只是改名爲適當的,忘掉它...

+0

這不是問題,但我想了解發生了什麼。 – MES

+0

我有同樣的問題,是否有可能從控制檯中刪除這樣的錯誤信息? –

+0

是否可以手動刪除線程以防止出現這些錯誤信息? –

0

您需要設置在關閉時刪除該視圖。這只是需要添加以下兩行到您的應用程序:

from PyQt4.QtCore import Qt 

,然後的tableView實例化後:

tableView.setAttribute(Qt.WA_DeleteOnClose) 

當我這些行添加到您的代碼,我沒有得到這個錯誤。