2012-01-24 6 views
6

PyQt4는 아래 코드는 QObject를이 ::가 startTimer PyQt4 결과

오류 발생 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

버그 일 가능성이 있습니다.

파이썬이 종료되기 시작하면 객체가 가비지 수집되는 순서를 예측할 수 없습니다. 보고있는 오류 메시지가 그 부작용 일 가능성이 큽니다.

응용 프로그램에 실제 문제가 있습니까?

하지, 그냥 적절한 이름을 변경하고 잊어 ...

+0

문제는 아니지만 무슨 일이 일어나고 있는지 알고 싶었습니다. – MES

+0

같은 문제가 있습니다. 콘솔에서 이러한 오류 메시지를 제거 할 수 있습니까? –

+0

이러한 오류 메시지를 방지하기 위해 스레드를 수동으로 삭제할 수 있습니까 ?? –

0

귀하는이 닫힐 때 삭제보기를 설정해야합니다. 이것은 단지 응용 프로그램에 다음 두 줄을 추가 수반 :

from PyQt4.QtCore import Qt 

하고있는 tableView 인스턴스화 후 : 난 당신의 코드에 그 라인을 추가하면

tableView.setAttribute(Qt.WA_DeleteOnClose) 

내가 오류가 발생하지 않습니다.