【问题标题】:What is the easiest way to give values to entries in Tkinter, python?给Tkinter,python中的条目赋值的最简单方法是什么?
【发布时间】:2021-03-17 14:15:01
【问题描述】:

我的问题是我不知道应该如何编写 get() 方法。所以,我创建了第二个空列表,当我将原始列表附加到第二个列表时,他们得到了值。这显然需要太多的内存,而且太复杂(和荒谬)。

from tkinter import *

root = Tk()

Car = ['BMW', 'Mercedes', 'Ferrari', 'Ford', 'Toyota']
Attributes = ['Country', 'Modell', 'Color', 'Year', 'Price']

entriesList = []
entriesList2 = []

def appendToDict():
    for i in entriesList:
        entriesList2.append(i.get())       # must be simplier way
    print(entriesList2)

for i in range(len(Attributes)):
    myLab = Label(root, text=Car[i])
    myLab.grid(row=0, column=i+1)
    myLab2 = Label(root, text=Attributes[i])
    myLab2.grid(row=i+1, column=0)
    for j in range(len(Car)):
        myEntry = Entry(root)
        myEntry.grid(row=i+1, column=j+1)
        entriesList.append(myEntry)


MyButton = Button(root, text='Click me!', command=appendToDict).grid(row=7, column=3)

root.mainloop()

我试过了,但它在第 13 行不起作用:

 i =  i.get()

那么,最简​​单的方法是什么?

【问题讨论】:

  • 我在这里看不到任何 easy 方法,但我注意到您的列表是全局的,因此您总是附加到同一个列表。也许在函数内创建列表。如果您要查找短代码,也可以在函数内使用entriesList2 = [i.get() for i in entriesList]

标签: python list tkinter append


【解决方案1】:

你可以

  • 使用map,将函数应用于iterable中的所有项目。

    map_object = map(lambda ent:ent.get(), entriesList)
    entriesList2 = list(map_object)
    
  • 使用列表理解(@CoolCloud 在 cmets 中也提到过)

    entriesList2 = [i.get() for i in entriesList]
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 2010-12-07
    相关资源
    最近更新 更多