我正在尝试创建一个垃圾邮件机器人,它会不断地向我发送垃圾邮件文本。虽然我设法仅通过编码(没有 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()
您可以使用
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调整为较小的数字。