Проблема в том, что l oop, выполняемый в методе "очередь", отнимает много времени, не позволяя GUI выполнять свою работу, решение состоит в том, чтобы выполнить его в другом потоке:
import sys
import threading
import time
from PySide2.QtWidgets import (
QWidget,
QVBoxLayout,
QHBoxLayout,
QGridLayout,
QPushButton,
QSizePolicy,
QLabel,
QApplication,
)
from PySide2.QtCore import Qt
import pyautogui as pag
import telegram
api_key = "xxxxxxxx"
bot = telegram.Bot(token=api_key)
chat_id = 111111111
def process():
while True:
i = pag.locateCenterOnScreen("img.png")
if i:
pag.click(i)
print("Accepted queue! The program will exit.")
bot.sendMessage(chat_id=chat_id, text="Accepted queue!")
break
else:
time.sleep(1)
print("Accepting queue...")
class Form(QWidget):
def __init__(self):
super(Form, self).__init__()
self.setWindowTitle("Auto Accept Queue-1.0.0")
self.resize(480, 270)
self.vb = QVBoxLayout(self)
self.hbMid = QHBoxLayout()
self.gl = QGridLayout()
self.vb.addStretch()
self.vb.addLayout(self.hbMid)
self.vb.addStretch()
self.hbMid.addStretch()
self.hbMid.addLayout(self.gl)
self.hbMid.addStretch()
self.btn = QPushButton("자동 수락 시작")
self.btn.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.btn.setFixedSize(140, 80)
self.btn.setStyleSheet("font-size: 16px; font-family: 맑은 고딕;")
self.lblHotkey = QLabel("단축키 : F8")
self.lblHotkey.setAlignment(Qt.AlignCenter)
self.lblHotkey.setStyleSheet("font-size: 14px; font-family: 맑은 고딕;")
self.gl.addWidget(self.btn, 0, 0)
self.gl.addWidget(self.lblHotkey, 2, 0)
self.btn.clicked.connect(self.queue)
def queue(self):
self.btn.setText("자동 수락 중...")
threading.Thread(target=process, daemon=True).start()
if __name__ == "__main__":
app = QApplication([])
form = Form()
form.show()
sys.exit(app.exec_())