簡體   English   中英

PyQt4導致QThread錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM