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