簡體   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