繁体   English   中英

如何从循环中获取每个 tkinter 条目的唯一值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM