Поэтому я использую графический модуль от Zelle в Python 3, и я пытаюсь сделать так, чтобы пользователь вводил слово, а затем каждый раз, когда они нажимают в графическом окне, он рисует следующую букву слова, где я нажимаю. Я знаю, что это должно использовать индексацию строк, но я не уверен, как итерации по индексам строк, поскольку синтаксический анализ переменной цикла в индекс дает ошибку, чтобы индексы строк были целыми числами.
word_input = input("Enter a word!")
win = GraphWin("Graphic Letters", 400,400)
for ch in word_input:
click_location = win.getMouse()
word_written = Text(click_location, word_input[1])
word_written.draw(win)
Это то, что у меня есть до сих пор, но я могу только анализировать числа в
word_input []
так как он не позволит мне помещать 'ch' в него для итерации по каждому из строковых индексов. Поэтому, если я добавлю "пчелу", она будет только рисовать "e" в окне три раза, когда я нажимаю вместо рисования b, e, e в порядке.
ch
уже не является характер, так что вам больше не нужно индексировать word_input
:
word_input = input("Enter a word!")
win = GraphWin("Graphic Letters", 400,400)
for ch in word_input:
click_location = win.getMouse()
word_written = Text(click_location, ch)
word_written.draw(win)
Строка - это итерабельность ее символов (которые также являются строками), поэтому, если вы пишете for ch in word_input
, тогда ch
будет каждая итерация иметь в качестве значения следующий символ, например:
>>> for ch in 'foobar':
... print(ch)
...
f
o
o
b
a
r
Обратите внимание, однако, что здесь, вероятно, все символы будут отображаться друг над другом. Возможно, вам захочется "поспать" между итерациями, чтобы дать пользователю некоторое время для перемещения мыши.