[英]PyQt4 Results in QThread error
使用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()
这可能不是一个bug。
当Python开始关闭时,对象被垃圾收集的顺序可能是不可预测的。 您看到的错误消息很可能是副作用。
这是否会在您的应用程序中造成真正的问题?
如果没有,只需重新命名并忘记它......
您需要将视图设置为在关闭时删除。 这只需要在您的应用程序中添加以下两行:
from PyQt4.QtCore import Qt
然后在实例化tableView之后:
tableView.setAttribute(Qt.WA_DeleteOnClose)
当我将这些行添加到您的代码中时,我没有收到错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.