Как сделать вкл/выкл цикла while в python с помощью pyautogui и pyqt5?

Ссылка скопирована
1 ответ

Добрый день, у меня есть функция, которая запускает бесконечный цикл while, я смог сделать, чтобы я мог его остановить, но у меня не получается сделать остановку и включение цикла (паузу)

Main.py:

class Thread(QThread):     value_changed = pyqtSignal(str)      def __init__(self, login):         super().__init__()         self.login = login         self.running = True      def run(self, *args, **kwargs):         self.conn = sqlite3.connect('login.db')         self.cur = self.conn.cursor()          coord_x = self.cur.execute(             'SELECT coord_X FROM settings_autoswap WHERE login = ?',             (self.login,)).fetchone()         coord_y = self.cur.execute(             'SELECT coord_y FROM settings_autoswap WHERE login = ?',             (self.login,)).fetchone()         button = self.cur.execute(             'SELECT button FROM settings_autoswap WHERE login = ?',             (self.login,)).fetchone()         color = self.cur.execute(             'SELECT color FROM settings_autoswap WHERE login = ?',             (self.login,)).fetchone()         pause = self.cur.execute(             'SELECT pause FROM settings_autoswap WHERE login = ?',             (self.login,)).fetchone()         stop = self.cur.execute(             'SELECT stop FROM settings_autoswap WHERE login = ?',             (self.login,)).fetchone()         x = coord_x[0] if coord_x else None         y = coord_y[0] if coord_y else None         b = button[0] if button else None         c = color[0] if color else None         p = pause[0] if pause else None         s = stop[0] if stop else None          while self.running:                 # Ваш основной цикл                 Color = pyautogui.screenshot().getpixel((x, y))                 print(Color)                 if str(Color) == str(c):                     print('swap')                     pyautogui.press("2", presses=b, interval=0.01)                  # Проверяем, нажата ли клавиша для остановки цикла                 elif keyboard.is_pressed(p):                     self.running = False

class Thread(QThread): value_changed = pyqtSignal(str) def __init__(self, login): super().__init__() self.login = login self.running = True def run(self, *args, **kwargs): self.conn = sqlite3.connect('login.db') self.cur = self.conn.cursor() coord_x = self.cur.execute( 'SELECT coord_X FROM settings_autoswap WHERE login = ?', (self.login,)).fetchone() coord_y = self.cur.execute( 'SELECT coord_y FROM settings_autoswap WHERE login = ?', (self.login,)).fetchone() button = self.cur.execute( 'SELECT button FROM settings_autoswap WHERE login = ?', (self.login,)).fetchone() color = self.cur.execute( 'SELECT color FROM settings_autoswap WHERE login = ?', (self.login,)).fetchone() pause = self.cur.execute( 'SELECT pause FROM settings_autoswap WHERE login = ?', (self.login,)).fetchone() stop = self.cur.execute( 'SELECT stop FROM settings_autoswap WHERE login = ?', (self.login,)).fetchone() x = coord_x[0] if coord_x else None y = coord_y[0] if coord_y else None b = button[0] if button else None c = color[0] if color else None p = pause[0] if pause else None s = stop[0] if stop else None while self.running: # Ваш основной цикл Color = pyautogui.screenshot().getpixel((x, y)) print(Color) if str(Color) == str(c): print('swap') pyautogui.press("2", presses=b, interval=0.01) # Проверяем, нажата ли клавиша для остановки цикла elif keyboard.is_pressed(p): self.running = False

Дополнительно:

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Никита Орлов Ответ

Для того чтобы включить и выключить цикл while в Python с помощью библиотек PyAutoGUI и PyQt5, можно использовать следующий подход:

1. Сначала необходимо импортировать необходимые модули:

import pyautogui
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton

import pyautogui from PyQt5.QtWidgets import QApplication, QWidget, QPushButton

2. Создайте класс для главного окна приложения, в котором будут размещены кнопки для управления циклом:

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
 
        self.initUI()
 
    def initUI(self):
        self.btn_start = QPushButton('Start', self)
        self.btn_start.clicked.connect(self.start_loop)
 
        self.btn_stop = QPushButton('Stop', self)
        self.btn_stop.clicked.connect(self.stop_loop)

class MainWindow(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.btn_start = QPushButton('Start', self) self.btn_start.clicked.connect(self.start_loop) self.btn_stop = QPushButton('Stop', self) self.btn_stop.clicked.connect(self.stop_loop)

3. Далее определите методы для включения и выключения цикла while:

    def start_loop(self):
        while True:
            # ваш код здесь
            pass
 
    def stop_loop(self):
        # выход из цикла
        pass

def start_loop(self): while True: # ваш код здесь pass def stop_loop(self): # выход из цикла pass

4. Наконец, создайте экземпляр класса MainWindow и запустите главный цикл приложения:

if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

if __name__ == '__main__': app = QApplication([]) window = MainWindow() window.show() app.exec_()

Теперь у вас есть простой способ включить и выключить цикл while в Python с помощью библиотек PyAutoGUI и PyQt5. Не забудьте добавить свой собственный код внутри цикла while для выполнения необходимых действий.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно