Merhabalar.
PySide2 kullanarak bir çeşit arayüz geliştirmeye çalışıyorum. Arayüz üzerindeki QTextEdit’e her saniye yeni bir yazı eklemem gerekiyor. Kodların bir kısmı şu şekilde:
import sys
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import threading
import time
keep_running = True
class Device:
def __init__(self):
pass
def write(self):
gui.add_text("SerialMonitor", "Hello World!")
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setFixedSize(875, 475)
self.move(0, 0)
self.TextEdits = {}
self.setup_TextEdits()
self.show()
# .
# .
# .
def setup_TextEdits(self):
self.TextEdits.update({"SerialMonitor": QTextEdit(self)})
self.TextEdits["SerialMonitor"].setGeometry(QRect(25, 25, 700, 425))
self.TextEdits["SerialMonitor"].setStyleSheet(f"background-color:rgb{(180, 180, 180)};")
def add_text(self, object_name, text_to_add):
TextEdit = self.TextEdits[object_name]
TextEdit.setText(f"{TextEdit.toPlainText()}\n{text_to_add}")
app = QApplication(sys.argv)
D = Device()
gui = MainWindow()
gui.add_text("SerialMonitor", "Hello World!")
app.exec_()
Yukarıdaki gibi çalıştırdığımda bir sıkıntı yok, istediğimi elde edebiliyorum.
Fakat ne zaman ki threading kullanarak bunu yapmaya çalışsam, arayüz anında donup kalıyor.
threading.Thread(target=D.write).start()
Normalde threading ile while döngüsünde her saniye bir şeyler yazdırmam lazım. Fakat döngüsüz de olsa setText()
ile arayüz donup kalıyor. Neden böyle olduğu konusunda bir fikriniz var mıdır dostlar?
Donduktan kısa bir süre sonra kapanıyor:
Process finished with exit code -1073741819 (0xC0000005)
Edit: clear() yapınca da aynısı oluyor. QTextEdit’teki yazıyla ilgili en ufak bir değişiklik yapamıyorum.