[英]How to get each tkinter Entry's unique value from loop
我正在尝试创建一个产生随机数量条目的刽子手游戏。 问题是,我无法获得每个条目的唯一值。
这是我到目前为止所尝试的:
from tkinter import *
import random
root = Tk()
root.geometry('500x500')
color = 'blue'
a1 = Canvas(root, height = 500, width = 500, bg = color)
a1.pack()
#Variable Declaration
var = StringVar()
x = ''
words = ['penguin','wolves','skyscraper','dinosaur','time travel']
lists = {}
def Enter():
for i in lists:print(lists[i])
x = 'entry'
a=150
b=350
for i in range(len(random.choice(words))):
lists[f'entry{i}'] = Entry(textvariable = StringVar(),width =3, font = 'tahoma',justify=CENTER).place(x=a,y=b)
a+=30
b1 = Button(root, text = "Enter",command=Enter)
b1.place(x=225,y=400)
root.mainloop()
在您的情况下,我建议将文本输入字段设为 make 1,然后再拆分字母。 python 中的字符串可以像列表一样访问,你有 len(string) 和 string[3] 给出 4 个字母等。
您必须做的第一件事是将小部件的创建与小部件的布局分开。 在 python 中, x().y()
返回y()
() 的值,因此Entry(...).place(...)
...) 总是返回place(...)
和place(...)
的值返回None
。
我要做的第二件事是不要使用f'entry{i}'
作为列表的索引。 它会起作用,但它比它需要的更麻烦。
for i in range(len(random.choice(words))):
lists[i] = Entry(textvariable = StringVar(),width =3, font = 'tahoma',justify=CENTER)
lists[i].place(x=a,y=b)
a+=30
上面的内容让您可以轻松地引用任何条目小部件,例如lists[0]
、 lists[1]
等。
最后,在您的Enter
方法中(根据PEP8指南应命名为enter
),您可以直接遍历条目而不使用索引:
def Enter():
for index, entry in lists.items():
value = entry.get()
print(value)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.