• 09-10-2022, 14:45:20
    #1
    Arkadaşlar yapmak istediğim tam olarak şu.

    Pyqt5 ile bir program geliştirdim ve programın bir kısmında plaintext den oluşan bir log kısmı var.
    For içinde dönen verileri plaintext e yazdırıyorum verileri ama program sonuçlanında bu verileri yazıyor.
    Benim yapmak istediğim print dediğimizde consol ekranında nasıl program çalışırken anlık yazıyorsa o şekilde yazdırmak.
    Araştırdığım da pyqt5 de QProcess ile yapılıyormuş ama nasıl kullanıldığını çözemedim. Bu konuda bilgisi olan var mı acaba?
  • 09-10-2022, 16:26:57
    #2
    Cevap için ben de beklemedeyim.Gecen ay lazım oldu ama çözümü bulamadım şimdi öğrenirsem çok iyi olacak
  • 09-10-2022, 16:32:14
    #3
    https://pythonpyqt.com/pyqt-events/

    qt'de yer alan signals ve plaintext widget ile yapabilirsiniz.
  • 09-10-2022, 16:47:40
    #4
    mertcangokgoz adlı üyeden alıntı: mesajı görüntüle
    https://pythonpyqt.com/pyqt-events/

    qt'de yer alan signals ve plaintext widget ile yapabilirsiniz.
            def Start(self):
                    txt = self.main.lneIslenecekTxt.text()
                    ciktiDosyasi = self.main.lneCiktiDosyasi.text()
                    txtCiktiAdi = self.main.lneCiktiAdi.text()
                    eklenecekeMetin = self.main.lneEklenecekMetin.text()
                    if txt:
                            if eklenecekeMetin:
                                    txtOku = open(txt, 'r')
                                    txtMetinOlustur = ''
     
                                    for t in txtOku:
                                            metinEkle = str(eklenecekeMetin) + str(t)
                                            self.main.plainLog.insertPlainText(metinEkle)
                                            txtMetinOlustur+=metinEkle
                                    
                                    if ciktiDosyasi:
                                            if txtCiktiAdi:
                                                    txtCiktiAdi = txtCiktiAdi + '.txt'
                                                    yeniTxtYolu = os.path.join(ciktiDosyasi,txtCiktiAdi)
                                                    txtYaz = open(yeniTxtYolu, 'w')
                                                    txtYaz.write(txtMetinOlustur)
                                            else:
                                                    self.main.statusbar.showMessage('Çıktı Dosya Adı Girilmedi.', 5000)
                                    else:
                                            self.main.statusbar.showMessage('Çıktı Dosyası Seçilmedi.', 5000)
                            else:
                                    self.main.statusbar.showMessage('Eklenecek Metin Girilmedi.', 5000)
                    else:
                            self.main.statusbar.showMessage('TXT seçilmedi.', 5000)
    şu kısıma nasıl uyarlayabilirim hocam dediğiniz tam anlayamadım da.

    elf.main.plainLog.insertPlainText(metinEkle)
    bu kısım ile plaintext e ekliyorum ama en son program sonlanınca yazıyor.
  • 14-10-2022, 11:35:07
    #5
    MVX
    Kimlik doğrulama veya yönetimden onay bekliyor.
    threading kullanmalısın.
    Pyqt5'in kendisine ait QThread'ı bulunuyor bunu sınıf içinde yapabilirsin lakin böyle küçük işlemlerde gerek olduğunu düşünmüyorum ama yine de göstereyim.

    class Yazdır_Class(QThread):
              def __init__(self,arg):
                     super().__init__
                    
    
    
              def run(self):
                     """ CODS"""
    self.run() fonksiyonunu çalıştırmayacaksın QThread zaten sen çağırmadan kendisi çağırmaktadır bunu sakın atlama

    bir diğer yöntem ise threading kütüphanesini kullanmak bu tarz küçük işlemlerde çok daha kolay ve pratik.
    eğer bu fonksiyonu bir push button ile clicked signali ile çalıştırmak istiyorsan su sekilde yapacaksn


    import threading
    #
    #
    #
                     buton.clicked.connect(self.start_threading)
    
           def start_threading(self):
    
                     the = threading.Thread(self.start,(argument))
                     the.start()
  • 14-10-2022, 15:26:00
    #6
    MVX adlı üyeden alıntı: mesajı görüntüle
    threading kullanmalısın.
    Pyqt5'in kendisine ait QThread'ı bulunuyor bunu sınıf içinde yapabilirsin lakin böyle küçük işlemlerde gerek olduğunu düşünmüyorum ama yine de göstereyim.

    class Yazdır_Class(QThread):
              def __init__(self,arg):
                     super().__init__
                    
    
    
              def run(self):
                     """ CODS"""
    self.run() fonksiyonunu çalıştırmayacaksın QThread zaten sen çağırmadan kendisi çağırmaktadır bunu sakın atlama

    bir diğer yöntem ise threading kütüphanesini kullanmak bu tarz küçük işlemlerde çok daha kolay ve pratik.
    eğer bu fonksiyonu bir push button ile clicked signali ile çalıştırmak istiyorsan su sekilde yapacaksn


    import threading
    #
    #
    #
                     buton.clicked.connect(self.start_threading)
    
           def start_threading(self):
    
                     the = threading.Thread(self.start,(argument))
                     the.start()
    Hocam güzel açıklamışsınız ama benim kafa artık bu konuda çok karıştı.
    Rica etsem pc ye bağlanarak gösterme şansınız vaktiniz olabilir mi acaba?
    Amacım bu olayı öğrenmek bu basit bir proje evet farkındayım ama başka projelerde geliştiriyorum orada işime çok yarayacak bir konu olduğu için üstüne duruyorum.
  • 14-10-2022, 16:04:08
    #7
    Kimlik doğrulama veya yönetimden onay bekliyor.
    mertcangokgoz adlı üyeden alıntı: mesajı görüntüle
    https://pythonpyqt.com/pyqt-events/

    qt'de yer alan signals ve plaintext widget ile yapabilirsiniz.
    Hocam sizi twitter da takip ediyorum. Dünya küçükmüş gerçekten de.
  • 15-10-2022, 08:57:39
    #8
    PhYtOnX adlı üyeden alıntı: mesajı görüntüle
    Hocam güzel açıklamışsınız ama benim kafa artık bu konuda çok karıştı.
    Rica etsem pc ye bağlanarak gösterme şansınız vaktiniz olabilir mi acaba?
    Amacım bu olayı öğrenmek bu basit bir proje evet farkındayım ama başka projelerde geliştiriyorum orada işime çok yarayacak bir konu olduğu için üstüne duruyorum.
    Tabi müsait olduğununuzda mesajlardan ulaşmanız yeterlidir.