2012-01-24 37 views
6

Sử dụng PyQt4 4.8.6 mã dưới đây tạo ra lỗiPyQt4 Kết quả do lỗi QThread

QObject :: startTimer: QTimer chỉ có thể được sử dụng với chủ đề bắt đầu với QThread

khi được sử dụng như các biến cho QApplication, nhưng nó không tạo ra lỗi nếu cpp (hoặc bất kỳ thứ gì khác) được sử dụng cho biến. Đây có phải là một lỗi trong PyQt4 hoặc có cái gì đó tôi đang thiếu?

#! /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() 

Trả lời

6

Đây có thể không phải là lỗi, như vậy.

Khi Python bắt đầu tắt, thứ tự các đối tượng bị thu gom rác có thể không thể đoán trước được. Thông báo lỗi bạn đang thấy rất có thể là tác dụng phụ của điều đó.

Điều này có gây ra sự cố thực sự trong ứng dụng của bạn không?

Nếu không, chỉ cần đổi tên khi thích hợp và quên nó ...

+0

Nó không phải là một vấn đề, nhưng tôi muốn hiểu những gì đang xảy ra. – MES

+0

Tôi có cùng sự cố, có thể xóa các thông báo lỗi đó khỏi bảng điều khiển không? –

+0

Có thể xóa chuỗi theo cách thủ công để ngăn các thông báo lỗi này không ?? –

0

Bạn cần đặt chế độ xem để xóa khi đóng. Điều này chỉ đòi hỏi thêm hai dòng sau vào ứng dụng của bạn:

from PyQt4.QtCore import Qt 

và sau đó sau khi tableView là instantiated:

tableView.setAttribute(Qt.WA_DeleteOnClose) 

Khi tôi thêm những dòng mã của bạn tôi không nhận được lỗi.

Các vấn đề liên quan