Ответы пользователя по тегу Python
  • Как сделать цикл в PyQt5?

    Azamat_Lee
    @Azamat_Lee
    Работаю с Wordpress
    Для решения вашей проблемы с бесконечным циклом в PyQt5, вы можете использовать механизм многопоточности, чтобы цикл выполнялся в фоновом потоке, и это не блокировало главный интерфейс пользователя. Также вам понадобится добавить кнопку для остановки цикла. Вот пример кода, который демонстрирует, как это можно сделать:

    from PyQt5 import QtCore, QtGui, QtWidgets
    import pyautogui
    import threading
    
    class Ui_MainWindow(object):
        # ... ваш предыдущий код ...
    
        def add_functions(self):
            self.pushButton.clicked.connect(self.start_autoswap)
            self.stopButton.clicked.connect(self.stop_autoswap)  # Добавьте кнопку остановки в ваш интерфейс
    
        def start_autoswap(self):
            self.autoswap_thread = threading.Thread(target=self.autoswap, daemon=True)
            self.autoswap_thread.start()
    
        def stop_autoswap(self):
            self.running = False
    
        def autoswap(self):
            self.running = True
            while self.running:
                x = 459
                y = 1402
                Color = pyautogui.screenshot().getpixel((x, y))
                print(Color)
                if Color == (185, 185, 185):
                    pyautogui.press("2", presses=4, interval=0.01)
    
    # ... остальная часть вашего кода ...


    В этом примере:

    Метод start_autoswap запускает метод autoswapв отдельном потоке.
    Переменная self.running используется для контроля выполнения цикла.
    Метод stop_autoswap изменяет значение self.running на False, что приводит к остановке цикла.
    Не забудьте добавить кнопку остановки в ваш пользовательский интерфейс и соединить её с методом stop_autoswap. Также убедитесь, что вы используете daemon=True при создании потока, чтобы он завершался вместе с основной программой.
    Ответ написан
    Комментировать