• 14-12-2022, 23:39:26
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    from PyQt5.QtCore import QObject, QThread, pyqtSignal
    class Main(QThread):
        def __init__(self):
            pass
        def work(self):
            print('Running.')
            
    class Runner():
        def __init__(self):
            self.thread = QThread()
            self.main = Main()
            self.main.moveToThread(self.thread)
            self.thread.started.connect(self.main.work)
            self.thread.start()
            
            
    
    obj = Runner()
    obj.__init__()
    Yukarıdaki kodda şu hatayı alıyorum:
    Alıntı
    Traceback (most recent call last):
    File "c:UsersadminOneDriveMasaüstüxtry.py", line 20, in <module>
    obj = Runner()
    File "c:UsersadminOneDriveMasaüstüxtry.py ", line 13, in __init__
    self.main.moveToThread(self.thread)
    RuntimeError: super-class __init__() of type Main was never called
  • 14-12-2022, 23:45:26
    #2
     class Main(QThread):    
                          def __init__(self):        
                                    super().__init__()        
                          def work(self):  
                                     print('Running.')
    bu şekilde dener misiniz bir biraz görüntü kötü oldu ama anlamışsınzıdır.
  • 14-12-2022, 23:58:32
    #3
    @LocatioFirst; çalıştı mı hocam?
  • 15-12-2022, 00:01:06
    #4
    scutotech adlı üyeden alıntı: mesajı görüntüle
    @LocatioFirst; çalıştı mı hocam?
    çalıştı diyebilirim ama şöyle bir çıktı verdi ve program quit attı
    QThread: Destroyed while thread is still running
  • 15-12-2022, 00:03:24
    #5
    LocatioFirst adlı üyeden alıntı: mesajı görüntüle
    çalıştı diyebilirim ama şöyle bir çıktı verdi ve program quit attı
    QThread: Destroyed while thread is still running
    Thread içerisinde wait() methodunu kullanırsanız sorununuz çözülecektir. Böylece thread içerisindeki işlem bitmeden Thread yok edilmeyecek.
  • 15-12-2022, 00:05:06
    #6
    thread = QThread()
    
    
    thread.wait()
    
    del thread
  • 15-12-2022, 00:11:22
    #7
    @scutotech; hocam çok teşekkür ederim yardımınız için, az önce pc başından kalktım, yarın deneyeceğim ama tahminen olacaktır diye düşünüyorum. super methodunu her yerde kullanıyorum sabahtan beri, yukarıda kullanmak aklıma gelmedi 😅
    Sonucu yine yazarım yarın hocam, iyi çalışmalar.
  • 15-12-2022, 11:33:48
    #8
    @scutotech; hocam merhaba, dediğiniz çözüm çalıştı. Son bir hatam daha mevcut onu da paylaşayım eğer bilginiz varsa;
    from PyQt5.QtCore import QObject, QThread, pyqtSignal
    import time
    
    class Main():
        def __init__(self):
            super().__init__()
        def workin(self):
            self.word = 'BAŞARILI'
    
    
    class Main2(QThread, Main):
        def __init__(self):
            super().__init__()
    
    class Runner():
        def __init__(self):
            super().__init__()
            self.main2 = Main2()
            #self.main2.workin()
            print(self.main2.word)
            
        
    obj = Runner()
    obj.__init__()
    Bu kodda aldığım hata:
    Alıntı
    AttributeError: 'Main' object has no attribute 'word'
    Eğer # işareti koyduğum yeri aktif edersem sanırım objeyi oluşurup BAŞARILI yazısını döndürüyor.
  • 15-12-2022, 13:39:17
    #9
    LocatioFirst adlı üyeden alıntı: mesajı görüntüle
    @scutotech; hocam merhaba, dediğiniz çözüm çalıştı. Son bir hatam daha mevcut onu da paylaşayım eğer bilginiz varsa;
    from PyQt5.QtCore import QObject, QThread, pyqtSignal
    import time
    
    class Main():
        def __init__(self):
            super().__init__()
        def workin(self):
            self.word = 'BAŞARILI'
    
    
    class Main2(QThread, Main):
        def __init__(self):
            super().__init__()
    
    class Runner():
        def __init__(self):
            super().__init__()
            self.main2 = Main2()
            #self.main2.workin()
            print(self.main2.word)
            
        
    obj = Runner()
    obj.__init__()
    Bu kodda aldığım hata: Eğer # işareti koyduğum yeri aktif edersem sanırım objeyi oluşurup BAŞARILI yazısını döndürüyor.


    class Main():
        def __init__(self):
            super().__init__()
            self.word = 'BAŞARILI'  # Initialize 'word' in the __init__ method
    
    class Main2(QThread, Main):
        def __init__(self):
            super().__init__()
    
    class Runner():
        def __init__(self):
            super().__init__()
            self.main2 = Main2()
            print(self.main2.word)
    
    obj = Runner()
    obj.__init__()

    bu şekilde bir çözüm dener misiniz?