Python spambot 代码由于交互函数和循环而无法工作

问题描述 投票:0回答:1

我正在尝试创建一个垃圾邮件机器人,它会不断地向我发送垃圾邮件文本。虽然我设法仅通过编码(没有 GUI)来做到这一点,但我现在尝试使用 tkinker 创建一个 GUI,但它似乎不起作用。我得出的结论(如果我错了,请纠正我):它与垃圾邮件变量和 while 循环有关。当我执行程序时,我可以与 GUI 和所有内容进行交互,但是当我按下开始时,什么也没有发生。

from tkinter import *
import pyautogui, time


root = Tk()
root.geometry("240x100")

e = Entry(root, width=35, borderwidth=5)
e.grid(row=0, column=0, columnspan=3, padx=10, pady=10)

spam = 0

def start_pressed():
    time.sleep(5)
    global spam
    spam = 1





def stop_pressed():
    global spam
    spam = 0



Start = Button(root, text="Start", fg="green", command=start_pressed)
Stop = Button(root, text="Stop", fg="red", command=stop_pressed)

Start.grid(row=1, column=0)
Stop.grid(row=1, column=2)

while spam == 1:
    pyautogui.typewrite(e.get())
    pyautogui.press("enter")


root.mainloop()

python loops variables tkinter pycharm
1个回答
0
投票

您可以使用

after
方法来调用函数,而不会中断 UI。请参阅 “tkinter 每秒调用一个函数?”

spam = 0

def start_pressed():
    time.sleep(5) # wait 5 seconds before chaos
    global spam
    spam = 1      # set flag
    start_spam()  # call "recursive" method

def start_spam():
    global spam
    if spam == 1: # check flag
        pyautogui.typewrite(e.get())
        pyautogui.press("enter")
        root.after(100, start_spam)

def stop_pressed():
    global spam
    spam = 0      # set flag

当然,如果你想要更快的话,你可以将100调整为较小的数字。

© www.soinside.com 2019 - 2024. All rights reserved.