2012-01-24 9 views
6

は、以下のコードは、エラーPyQt4結果

のQObject :: startTimerを生成4.8.6: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

これらのエラーメッセージを防ぐために、スレッドを手動で削除することはできますか? @OrclUser。 –

0

は、あなたはそれが閉じられたときに、削除するビューを設定する必要があります。これは、ちょうどあなたのアプリケーションに次の2行を追加伴う:

from PyQt4.QtCore import Qt 

、その後のtableViewがインスタンス化された後:私はあなたのコードにこれらの行を追加すると

tableView.setAttribute(Qt.WA_DeleteOnClose) 

が、私はエラーを取得しないでください。