使用PyQt4 4.8.6,下面的代码会产生错误
QObject :: startTimer:QTimer只能用于以QThread启动的线程
当a用作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()
答案 0 :(得分:6)
这可能不是一个错误。
当Python开始关闭时,对象被垃圾收集的顺序可能是不可预测的。您看到的错误消息很可能是副作用。
这是否会导致您的应用程序出现问题?
如果没有,只需重新命名并忘记它......
答案 1 :(得分:0)
您需要将视图设置为在关闭时删除。这只需要在您的应用程序中添加以下两行:
from PyQt4.QtCore import Qt
然后在实例化tableView之后:
tableView.setAttribute(Qt.WA_DeleteOnClose)
当我将这些行添加到您的代码中时,我不会收到错误。