Как сделать вкл/выкл цикла while в python с помощью pyautogui и pyqt5?
Добрый день, у меня есть функция, которая запускает бесконечный цикл 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
Дополнительно:
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы включить и выключить цикл while в Python с помощью библиотек PyAutoGUI и PyQt5, можно использовать следующий подход:
1. Сначала необходимо импортировать необходимые модули:
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)
3. Далее определите методы для включения и выключения цикла while:
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_()
Теперь у вас есть простой способ включить и выключить цикл while в Python с помощью библиотек PyAutoGUI и PyQt5. Не забудьте добавить свой собственный код внутри цикла while для выполнения необходимых действий.