if 'registration_submit' in request.POSTЗачем проверять нажата ли кнопка, если только таким способом форма и может засабмититься? Попробуйте убрать эту проверку, мне кажется она лишняя.
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
при создании потока, чтобы он завершался вместе с основной программой. import logging # стандартная библиотека для логирования
import parser_functions # библиотека этого парсера
from telethon import TelegramClient, events, sync, connection # pip3 install telethon
from telethon.tl.functions.channels import JoinChannelRequest
from config import api_id, api_hash # получение айди и хэша нашего приложения из файла config.py
from loguru import logger
import asyncio
from telethon.errors.rpcerrorlist import FloodWaitError
# настройка логгера
logging.basicConfig(
level=logging.INFO,
filename='parser_log.log',
filemode='w',
format="%(asctime)s %(levelname)s %(message)s"
)
url = ["XXXX"]
flag = True
async def main():
async with TelegramClient('new', api_id, api_hash) as client:
for channel in url:
try:
logger.info(f"Аккаунт был подключен!")
await client(JoinChannelRequest(channel))
client.on_message(parser_functions.on_message) # регистрация обработчика сообщений
await client.run_until_disconnected()
except FloodWaitError as fwe:
print(f'Waiting for {fwe}')
await asyncio.sleep(delay=fwe.seconds)
if __name__ == "__main__":
asyncio.run(main())
def on_message(event):
try:
channel_id = event.message.chat.id
directory_name = str(event.message.id)
os.makedirs(f"{channel_id}/{directory_name}", exist_ok=True)
await parser_functions.get_message_content(client, event.message, url, channel_id, directory_name)
except Exception as passing:
logger.error(passing)
import os
dir = os.fsencode("F:\pythonProject\test_canverter_tdata\tdatas")
for file in os.listdir(dir):
filename = os.fsdecode(file)
if filename.endswith(".zip":
# Ваш код. Имя файла в filename
continue
else:
continue
myfile = open('test.txt', 'w')