Я пишу простой сценарий для изменения размера фотографий. Я хотел бы иметь виджет с текстовым полем, в котором появляются сообщения после изменения размера каждого файла.Режимы реального времени в реальном времени
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import time, sys
from PyQt5.QtCore import pyqtSignal, QThread
from PyQt5.QtWidgets import QApplication, QPushButton, QTextEdit, QWidget, QVBoxLayout
class Thread(QThread):
log = pyqtSignal(str)
def __init__(self, parent=None):
super(Thread, self).__init__(parent)
def test(self, i):
time.sleep(1)
self.log.emit(str(i))
class Widget(QWidget):
def __init__(self):
super().__init__()
self.ui()
def process(self):
self.toLog('some text...')
worker = Thread()
worker.log.connect(self.toLog)
for i in range(1, 5):
worker.test(i)
def ui(self):
self.LogOutputTxt = QTextEdit()
self.LogOutputTxt.setReadOnly(True)
startBtn = QPushButton('Start')
startBtn.clicked.connect(self.start)
layout = QVBoxLayout()
layout.addWidget(self.LogOutputTxt)
layout.addWidget(startBtn)
self.setLayout(layout)
self.resize(400, 300)
self.show()
def start(self):
self.toLog('start')
self.process()
def toLog(self, txt):
self.LogOutputTxt.append(txt)
if __name__ == '__main__':
app = QApplication(sys.argv)
ui = Widget()
sys.exit(app.exec_())
Пока все сообщения появляются сразу после изменения всех файлов. Есть ли способ сделать это один за другим (я имею в виду размер файла, отображаемое сообщение и т. Д.)?
Код, который вы опубликовали, является неполным и неправильным во многих отношениях, что его очень сложно переписать его конструктивно. Пожалуйста, прочитайте руководство по изготовлению [mcve]. – ekhumoro
Извините, я переписал код, надеюсь, что сейчас лучше. – przemekk
Ожидаете ли вы, что эти рабочие потоки выполняются одновременно? Если они выполняют код python, который связан с cpu (например, изменение размеров изображений), только один из них может запускаться за раз (из-за блокировки Global Interpreter Lock). Для параллельной обработки вам нужно будет использовать отдельные процессы, а не потоки. – ekhumoro