Как запустить PyQT5 GUI и выполнить задачу, подобную одновременному копированию файлов? - PullRequest
0 голосов
/ 11 октября 2019

Я новичок в PyQT. Недавно я столкнулся с ошибкой при попытке скопировать файлы, используя shutil в фоновом режиме при отображении графического интерфейса. Все элементы в диалоговом окне исчезают до завершения задачи. Я не знаю, выполняется ли GUI и внутренний Python одновременно, или мне нужно использовать поток, чтобы отделить фоновые задачи Python, такие как копирование или что-то длительное от GUI. Пожалуйста, посоветуйте мне, как решить эту проблему. Вот пример программы проблемы, с которой я сейчас сталкиваюсь,

import sys
import time
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 89)
        self.textLable = QtWidgets.QLabel(Dialog)
        self.textLable.setGeometry(QtCore.QRect(20, 40, 361, 16))
        self.textLable.setObjectName("textLable")

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.textLable.setText(_translate("Dialog", "Text"))

class Test(QtWidgets.QDialog, Ui_Dialog):
    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self.setupUi(self)
        self.QDialogDistrubs()

    def QDialogDistrubs(self):
        self.textLable.setText('Before Sleep')
        self.show()
        time.sleep(5)   #shows as empty dialog coz of the sleep function
        self.textLable.setText('elements in dialog disappeared')
        time.sleep(2)
        self.textLable.setText('Happend again elements disappeared...') #now the dialog will appear


app = QtWidgets.QApplication(sys.argv)
window = Test()
app.exec()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...