2012-01-24 27 views
6

PyQt4 kod aşağıda QObject :: startTimer PyQt4 Sonuçları

hata üretir 4.8.6 Kullanılması: a için değişken olarak kullanıldığında QTimer yalnızca parçacığı ile kullanılabilir QThread

ile başladı QApplication, ancak değişken için cpp (veya çoğu başka bir şey) kullanılıyorsa bu hata üretmez. Bu PyQt4'te bir hata mı yoksa eksik olduğum bir şey mi var?

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

cevap

6

Muhtemelen bu bir hata değildir.

Python kapatılmaya başladığında, nesnelerin çöp toplama işlemi sırasının sırası öngörülemez. Gördüğünüz hata mesajı büyük olasılıkla bunun bir yan etkisidir.

Bu, uygulamanızda gerçek bir soruna neden oluyor mu?

Değilse, tıpkı uygun adlandırmak ve unutun ...

+0

Sorun değil, ama neler olduğunu anlamak istedim. – MES

+0

Aynı sorunu yaşıyorum, bu tür hata mesajlarını konsoldan kaldırmak mümkün mü? –

+0

Bu hata iletilerini önlemek için iş parçacığı el ile silmek mümkün mü? –

0

Bunu kapatıldığında silmeye görünümünü ayarlamak gerekir. Bu sadece uygulamanıza aşağıdaki iki satırı ekleyerek gerektirir:

from PyQt4.QtCore import Qt 

ve sonra tableView başlatıldıktan sonra: Ben kodunuzu bu satırları eklediğinizde

tableView.setAttribute(Qt.WA_DeleteOnClose) 

ben hata alamadım.