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