문제

pyqt4 사용 4.8.6 아래 코드는 오류가 발생합니다

qobject :: starttimer : qTimer는 qthread로 시작된 스레드에서만 사용할 수 있습니다

A가 QPPLICATION의 변수로 사용되지만 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()
.

도움이 되었습니까?

해결책

그것은 아마도 버그가 아닐 것입니다.

파이썬이 종료되기 시작하면 객체가 가비지 수집 된 순서가 예측할 수 없을 수 있습니다.보고있는 오류 메시지는 그만큼 그럴 가능성이 높습니다.

응용 프로그램에서 실제 문제가 발생하는 것입니까?

그렇지 않은 경우 적절하게 이름을 바꾸고 잊어 버리십시오 ...

다른 팁

닫을 때 삭제할보기를 설정해야합니다.이렇게하면 응용 프로그램에 다음 두 줄을 추가하는 것이 좋습니다.

from PyQt4.QtCore import Qt
.

및 테이블 뷰가 인스턴스화 된 후 :

tableView.setAttribute(Qt.WA_DeleteOnClose)
.

코드를 코드에 추가하면 오류가 발생하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top