Моя программа зависает в тот момент, когда запускается мой спамер, созданный с помощью pysimplegui, pyautogui и таймера

#python

Вопрос:

когда я нажимаю «отправить», программа зависает, ребята, пожалуйста, помогите мне. Я новичок в pysimplegui и пытаюсь превратить одну из моих практических программ в графический интерфейс. Также не мог бы кто-нибудь сказать мне, как сделать стрелки элемента «вращение» функциональными? Если я допустил какие-то глупые ошибки, пожалуйста, дайте мне знать, как я уже сказал, я новичок в этом деле, так что любая помощь действительно ценится

 import time

import PySimpleGUI as sg
import pyautogui as pyautogui

# img_viewer.py



layout=[
    [
        sg.Text("What do you want to do?"),
        sg.Button("Spammer"),sg.Button("Encrypter"),sg.Button("Decrypter"),sg.Button("Password generator"),
        sg.Button("Exit")
    ]
]
window = sg.Window("Multifunctiontool", layout)
layoutspammer=[
    [
        [sg.Text("Press Start to start the bot.")],
        [sg.Text("Press Stop and then enter to stop the bot.")],
        [sg.Button("Start"),sg.Button("Stop")]
    ]
]
layoutspammerwindow=[
    [
        [sg.Text("How many messages do you want to send?"),sg.Spin(0,key="spammer")],
        [sg.Text("How long ist the cooldown? if not there just leave on 0"),sg.Spin(0,key="cooldown")],
        [sg.Text("What is your message?"),sg.Input(key="message")],
        [sg.Text("Do you want to leave a final message(Write down your message, if no just leave blank)?"),sg.Input(key="final_message")],
        [sg.Button("submit"),sg.Button("Exit")]

    ]
]
layoutspammerwindow2=[
    [
        [sg.Text("please enter a valid parameter")],
        [sg.Button("Continue"), sg.Button("Exit")]
    ]
]
spammerwindow= sg.Window("spammer",layoutspammer)
spammerwindow2= sg.Window("spammer",layoutspammerwindow,force_toplevel= True)
spammerwindow3= sg.Window("spammer",layoutspammerwindow2)



while True:
    event,values=window.read()
    if event== "Exit" or event== sg.WIN_CLOSED:
        break
    if event== "Spammer":
        spammer_active = True
        while spammer_active is True:
            event, values = spammerwindow.read()
            if event == "Start":
                event, values = spammerwindow2.read()
                if event == "Exit" or event == sg.WIN_CLOSED:
                    break
                if event == "submit":
                    spammer = int(values['spammer'])
                    cooldown = int(values['cooldown'])
                    message = (values['message'])
                    final_message = (values['final_message'])
                    time.sleep(5)
                    for xi in range(int(spammer)):
                        pyautogui.typewrite(message)
                        time.sleep(int(cooldown))
                        pyautogui.press('enter')
                        print(xi)
                    pyautogui.typewrite(final_message)
                    pyautogui.press('enter')
                    break

                elif event == "Stop" or event == sg.WIN_CLOSED:
                    spammer_active = False
                else:
                    event, values = spammerwindow3.read()
                    if event == "Exit" or sg.WIN_CLOSED:
                        break
                    elif event == "Continue":
                        spammer_active = True
                        while spammer_active is True:
                            event, values = spammerwindow.read()
                            if event == "Start":
                                event, values = spammerwindow2.read()
                                if event == "submit":
                                    spammer = int(values['spammer'])
                                    cooldown = int(values['cooldown'])
                                    message = (values['message'])
                                    final_message = (values['final_message'])
                                    time.sleep(5)
                                    for xi in range(int(spammer)):
                                        pyautogui.typewrite(message)
                                        time.sleep(int(cooldown))
                                        pyautogui.press('enter')
                                        print(xi)
                                    pyautogui.typewrite(final_message)
                                    pyautogui.press('enter')
                                    break

window.close()
 

Комментарии:

1. В вашем коде нет переключения между окнами. Первый параметр-это values список допустимых значений, а не только 0 для sg.spin , например [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] или [i for i in range(10)] .

2. Итак, в принципе, что мне нужно сделать, чтобы иметь возможность переключать окна?

3. Предпочитая создавать окно и обрабатывать все события в цикле событий в функции, не забудьте закрыть окно перед возвращением из функции. Не должно быть более двух окон одновременно, и дочернее окно с опцией modal=True .