У меня проблема с обновлением в реальном времени в QTextedit, потому что, когда я выполняю, экран остается неизменным c в течение нескольких секунд, пока он выполняет вычисления, но мне нужно, чтобы в QTextedit статус сообщения отображаются во время моделирования. Я пробовал использовать потоки, но я не очень хорошо это понимаю, так как это не сработает. Если бы кто-то мог мне помочь с этим, я был бы признателен, так как я не очень много занимаюсь проблемой Thread в Pyqt5. (Не понял) Большое спасибо
Прикрепляю код интерфейса:
TempClean.py
# -*- coding:utf-8 -*-
import os
import sys
import shutil
import getpass
import Optimization
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import time
tmp = ""
deleteFileCount = 0
deleteFolderCount = 0
class TempRemove(QMainWindow, Optimization.Ui_OptimalWindow):
def __init__(self, parent = None):
super(QMainWindow, self).__init__(parent)
self.initUI(self)
self.Clean()
def Task(self, folderName):
global tmp, deleteFileCount, deleteFolderCount
for the_file in os.listdir(folderName):
file_path = os.path.join(folderName, the_file)
indexNo = file_path.find('\\')
itemName = file_path[indexNo + 1:]
try:
self.show()
self.ScanInfo.repaint()
if os.path.isfile(file_path):
os.unlink(file_path)
self.ScanInfo.append(str(tmp + ('%s file deleted' % itemName)))
deleteFileCount = deleteFileCount + 1
elif os.path.isdir(file_path):
if file_path.__contains__('chocolatey'):
continue
shutil.rmtree(file_path)
self.ScanInfo.append(str(tmp + ('%s folder deleted' % itemName)))
deleteFolderCount = deleteFolderCount + 1
except Exception as e:
self.ScanInfo.append(str(tmp + ('Access Denied: %s' % itemName)))
# self.ScanInfo.append(str(tmp))
def Clean(self):
self.show()
self.ScanInfo.setText("")
folder = 'C:/Users/' + getpass.getuser() + '\AppData\Local\Temp'
self.Task(folder)
# Chrome
folder = 'C:/Users/' + getpass.getuser() + '\AppData\Local\Google\Chrome\User Data\Default\Cache'
self.Task(folder)
# Internet Explorer
folder = 'C:/Users/' + getpass.getuser() + '\AppData\Local\Microsoft\Windows\INetCache'
self.Task(folder)
# Edge
folder = 'C:/Users/' + getpass.getuser() + '\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC\Temp'
self.Task(folder)
global deleteFileCount, deleteFolderCount
result = (str(deleteFileCount) + ' files and ' + str(deleteFolderCount) + ' folders deleted.') + '\n'
self.ScanInfo.append(str(result))
if __name__ == '__main__':
a = QApplication(sys.argv)
app = TempRemove()
app.show()
a.exec_()
Optimization.py
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Ui_OptimalWindow(object):
def initUI(self, OptimalWindow):
OptimalWindow.setObjectName("OptimalWindow")
OptimalWindow.setWindowTitle('Optimization')
OptimalWindow.setWindowIcon(QIcon(".\image\Icon.jpg"))
OptimalWindow.resize(600, 579)
OptimalWindow.center()
self.title = QLabel(OptimalWindow)
self.title.setGeometry(QRect(0, 0, 600, 78))
self.title.setText("")
self.title.setPixmap(QPixmap(".\OptimalImage\\Optimization.jpg"))
self.Main = QLabel(OptimalWindow)
self.Main.setGeometry(QRect(0, 79, 600, 500))
self.Main.setText("")
self.Main.setPixmap(QPixmap(".\OptimalImage\\Main.png"))
self.ScanInfo = QTextEdit(OptimalWindow)
self.ScanInfo.setGeometry(QRect(40, 109, 500, 400))
def center(self):
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
OptimalWindow = QWidget()
ui = Ui_OptimalWindow()
ui.initUI(OptimalWindow)
OptimalWindow.show()
app.exec_()