pyqt4는 qthread 오류가 발생합니다
문제
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)
.
코드를 코드에 추가하면 오류가 발생하지 않습니다.
제휴하지 않습니다 StackOverflow