Python垃圾邮件机器人报错:'StringVar'对象不可迭代,求修复代码
修复你的GUI版垃圾邮件机器人错误
嘿,我来帮你搞定这个问题!你遇到的'StringVar' object is not iterable错误其实很好解决——你在spam()函数里直接循环了var这个tk.StringVar对象,但它本身是tkinter的特殊变量容器,不是可直接遍历的字符串。你得调用它的get()方法,才能拿到输入框里的实际文本内容。
我已经帮你修复了代码,还优化了一点布局和功能,你直接用就行:
import tkinter as tk from pynput.keyboard import Key, Controller import time keyboard = Controller() def spam(): time.sleep(2) # 给你2秒时间切换到要发送内容的窗口(比如聊天框) # 关键修复:获取输入框里的实际字符串,而不是直接遍历StringVar对象 message = var.get() while True: for char in message: keyboard.press(char) keyboard.release(char) time.sleep(0.12) # 额外加了回车键,让每次发送的内容自动换行(不需要的话可以删掉这两行) keyboard.press(Key.enter) keyboard.release(Key.enter) time.sleep(0.5) root = tk.Tk() var = tk.StringVar() root.geometry("500x300") write = tk.Label(text="输入要刷屏的内容,点击按钮后切换到目标窗口:") button = tk.Button(text="开始刷屏", command=spam) enter = tk.Entry(root, textvariable=var, width=50) # 加宽输入框,更实用 # 加pady让控件之间有间距,布局更美观 write.pack(pady=10) enter.pack(pady=5) button.pack(pady=20) root.mainloop()
几个关键说明:
- 核心修改:把
for char in var改成了先通过var.get()获取字符串,再遍历这个字符串 - 新增了自动按回车键的逻辑,这样每次发送的内容会单独成一行,避免连在一起(不需要的话删掉那两行回车键代码就行)
- 优化了控件布局,加了
pady参数让界面不那么拥挤,输入框也加宽了更实用
运行后,点击「开始刷屏」按钮,你有2秒时间切换到要发送内容的窗口(比如微信聊天框、QQ对话框),之后机器人就会自动开始输入啦。要停止的话直接关闭GUI窗口就行。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

