2012-11-26 6 views
10

जब (और केवल जब) मैं अपने अनुप्रयोग से बाहर, इन (और केवल इन) दोहराया संदेश कमांड प्रॉम्प्ट पर प्रकट:क्यों मुझे "QTimer केवल QThread के साथ शुरू किए गए थ्रेड के साथ उपयोग किया जा सकता है" संदेश अगर मेरे कोड में कोई QTimer नहीं है?

QObject::startTimer: QTimer can only be used with threads started with QThread 
QObject::startTimer: QTimer can only be used with threads started with QThread 
QObject::startTimer: QTimer can only be used with threads started with QThread 

यह मेरे लिए काफी अजीब है क्योंकि मैं अपने कोड में QTimer का उपयोग कभी नहीं (या QThread)। वास्तव में, एप्लिकेशन का उपयोग करके कोई त्रुटि या क्रैश नहीं होता है, इसलिए यह वास्तव में एक वास्तविक समस्या नहीं है। यह विंडोज और लिनक्स ओएस दोनों में होता है।

मेरे सभी आयात:

from __future__ import print_function 
from PyQt4.QtGui import (QApplication, QMainWindow, 
         QFileSystemModel, QTreeView, QTableView, 
         QAbstractItemView, QMenu, QAction, QKeyEvent) 
from PyQt4.QtCore import QDir, Qt, SIGNAL, QString, QFileInfo, QCoreApplication 
import sys 

मुख्य कार्य:

def main(): 
    app = QApplication(sys.argv) 
    app.setApplicationName("QFM") 
    app.setStyle("plastique") 
    gui = MainWindow() 
    gui.show() 
    app.exec_() 

शायद यह QFileSystemWatcher (QFileSystemModel द्वारा प्रयुक्त) से संबंधित कुछ हो सकता है, मुझे लगता है ... शायद यह कुछ QTimer का उपयोग करता है विशेषताएं।

+0

क्या आप बता सकते हैं कि इन संदेशों के आपके कोड की कौन सी पंक्ति है? – Kai

+0

बिलकुल नहीं, यह 2 या 3 बार-बार लाइनें अद्वितीय जानकारी हैं जो मुझे दी गई हैं !!! : - |। – iacopo

+0

कारण कोड लाइन खोजने के लिए कुछ कंसोल आउटपुट जोड़ने का प्रयास करें। – Kai

उत्तर

10

मुझे अतीत में इसी तरह की समस्याएं थीं।

QFileSystemModeldocumentation page निम्नलिखित कहते हैं:

QFileSystemModel.__init__ (self, QObject parent = None)

माता पिता तर्क, नहीं तो कोई नहीं, का कारण बनता है आत्म क्यूटी बजाय PyQt के स्वामित्व में किया जाना है।

दिए गए माता-पिता के साथ एक फ़ाइल सिस्टम मॉडल बनाता है।

आप एक parent तर्क उत्तीर्ण नहीं होते हैं तो अजगर कचरा कलेक्टर गलत समय पर और एक पक्ष प्रभाव के रूप में वस्तु को नष्ट कर सकते त्रुटि तुम उल्लेख बढ़ा। मेरी सलाह यह सुनिश्चित करना है कि आपकी वस्तुओं के पास उचित माता-पिता हों। मुझे लगता है कि इसे समस्या को ठीक करना चाहिए।

पीएस: मैंने आपके द्वारा उपयोग की जाने वाली प्रत्येक कक्षा के लिए दस्तावेज़ों की जांच नहीं की है। शायद QFileSystemModel एकमात्र ऐसा वर्ग नहीं है जिस पर यह बात होती है।

+0

मैंने 'QCompleter'' कक्षा के साथ एक ही समस्या को मारा – chip

3

मेरे अनुभव में ऐसा होता है जब मैं एक क्यूटी वर्ग को उप-वर्ग करता हूं और उप-वर्ग के सदस्यों में से एक क्यूटी पदानुक्रम का हिस्सा नहीं होता है। उदाहरण के लिए:

class MainWindow(QMainWindow): 
    def __init__(self, *args, **kwargs): 
     super(MainWindow, self).__init__(*args, **kwargs) 
     ... 
     self.my_widget = MyWidget() 
     ... 

अगर मैं इस तरह से MyWidget लागू, यह मेरे QTimer त्रुटि जब वस्तु नष्ट हो जाता है दे देंगे:

class MyWidget(object): 
    def __init__(self): 
     # do stuff 

हालांकि, QObject से MyWidget inherits तो कोई त्रुटि होती है यदि:

class MyWidget(QObject): 
    def __init__(self, parent): 
     super(MyWidget, self).__init__(parent) 
     #do stuff 
संबंधित मुद्दे

 संबंधित मुद्दे