You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:57:49