11
Июн
2021

Почему PyQt5 заставляет дважды нажимать на кнопку?

В моём приложение есть кнопка, которая, которая потоком запускает две функции.

main.py

class PVP(QtWidgets.QMainWindow, QWidget, MainInterface):
    def __init__(self):
        super().__init__()

        self.setupUi(self)

        logTextBox = QTextEditLogger(self)
        logging.getLogger().addHandler(logTextBox)
        logging.getLogger().setLevel(logging.DEBUG)

        root_logger = logging.getLogger()
        root_logger.setLevel(logging.DEBUG)
        handler = logging.FileHandler('PVPLog.log', 'w', 'utf-8') 
        handler.setFormatter(logging.Formatter('%(name)s, %(asctime)s, [%(levelname)s], %(message)s'))
        root_logger.addHandler(handler)

        self.PVELogs.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse) 

        self.thread = WorkThread()
        self.thread.threadSignal.connect(self.func2)      
        self.onPVE.clicked.connect(self.func1)

        log(" ========================================== VALHEIMBY LOGS - v1.0.0 ===========================================")
        log(" ==============================================================================================================\n")

    def func1(self):
        self.thread.start()

    def func2(self, value):
        log(f"{gettime}Проверка лог-файлов...")
        log(" ==============================================================================================================\n")
        self.onPVE.setEnabled(True)

class WorkThread(QtCore.QThread):
    threadSignal = QtCore.pyqtSignal(int)

    def __init__(self):
        super().__init__()

    def run(self):
        for i in range(1):
            self.msleep(200)
            self.threadSignal.emit(i)
            self.threadSignal.connect(check_csvs)
            self.threadSignal.connect(writecsv)

При первом нажатие кнопки, ничего не происходит кроме вывода текста: введите сюда описание изображения

При втором нажатие всё работает: введите сюда описание изображения


Ещё, есть непонятное предупреждение, что оно означает? Из-за этого как-то плохо выводится текст. Выводится только через некоторые время или пока не кликнешь на окно.

QObject::connect: Cannot queue arguments of type 'QTextBlock'
(Make sure 'QTextBlock' is registered using qRegisterMetaType().)
QObject::connect: Cannot queue arguments of type 'QTextCursor'
(Make sure 'QTextCursor' is registered using qRegisterMetaType().)

Источник: https://ru.stackoverflow.com/questions/1294224/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83-pyqt5-%D0%B7%D0%B0%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D1%82-%D0%B4%D0%B2%D0%B0%D0%B6%D0%B4%D1%8B-%D0%BD%D0%B0%D0%B6%D0%B8%D0%BC%D0%B0%D1%82%D1%8C-%D0%BD%D0%B0-%D0%BA%D0%BD%D0%BE%D0%BF%D0%BA%D1%83

Тебе может это понравится...

Добавить комментарий