6

使用 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()
4

2 回答 2

6

因此,这可能不是错误。

当 Python 开始关闭时,对象被垃圾收集的顺序可能无法预测。您看到的错误消息很可能是这种情况的副作用。

这是否会在您的应用程序中引起真正的问题?

如果没有,只需根据需要重命名并忘记它......

于 2012-01-24T23:44:11.870 回答
0

您需要将视图设置为在关闭时删除。这只需要在您的应用程序中添加以下两行:

from PyQt4.QtCore import Qt

然后在 tableView 实例化之后:

tableView.setAttribute(Qt.WA_DeleteOnClose)

当我将这些行添加到您的代码中时,我没有收到错误消息。

于 2015-12-13T18:30:54.477 回答