Объект Python не является итеративным - PullRequest
0 голосов
/ 29 мая 2018

Когда я запускаю этот код спамбота, он выдает ошибку, что «объект« StringVar »не повторяется», я новичок в python и не знаю точно, что это значит, если вы можете мне помочьс рабочим кодом этого, пожалуйста, отправьте его.

Я точно не знаю, что другая часть кода полностью работает, но я сделал консоль, и она отлично работает.

import tkinter as tk
from pynput.keyboard import Key, Controller
import time

keyboard = Controller()

def spam():

time.sleep(2)

    while True:

        for char in var:
            keyboard.press(char)
            keyboard.release(char)
            time.sleep(0.12)

root = tk.Tk()

var = tk.StringVar()

root.geometry("500x300")

write = tk.Label(text="Insert sentence then print the button:")
button = tk.Button(text="Spam", command = spam)
enter = tk.Entry(root, textvariable = var) 

write.pack()
enter.pack()
button.pack()

root.mainloop()

1 Ответ

0 голосов
/ 29 мая 2018

StringVar - это оболочка для строки, а не сама строка.Чтобы получить доступ к содержащейся в ней строке, попробуйте for char in var.get(): вместо for char in var:.Строки являются итеративными в Python, поэтому это будет работать.

То, что что-то «итеративное» в Python, означает, что у него есть метод с именем __iter__, который при вызове возвращает итератор, который в свою очередь может быть вызван дляцикл по элементам, которые он содержит, один за другим.Цикл for неявно вызывает метод __iter__ объекта для доступа к его итератору.Прочитайте https://docs.python.org/3/tutorial/classes.html#iterators для более подробного объяснения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...