pythonttkinter尝试通过动态创建的条目

2024-10-02 18:24:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个动态生成的tkinter条目字段列表。我需要抓取每个字段的内容,同时知道它所指的是什么。我尝试过添加类似"entry"+count = Entry(..)的东西,但正如预期的那样,它不会像这样工作,而且尝试这样做确实是一个非常愚蠢的设计实践,所以我认为它需要以数组的形式出现,但似乎不知道如何用一个条目来实现这一点。在

rowNum = 0
items = []

def tableGen(name):
    global rowNum
    entry = Entry(win).grid(row=rowNum, column=0)
    label = Label(win, text=name).grid(row=rowNum, column=1)
    self.items[rowNum] = [entry, label] # Problem Area 1
    rowNum += 1

def generate(): # Print each items value
    for item in items:
        print (item.get()) # Problem Area 2

# Generates Entrys and labels from file
e = ET.parse('file.xml').getroot()
for atype in e.findall('things'):
    tableGen(atype.get('name'))

generateBtn = Button(root, text="Generate", command=generate).pack()

generate()
root.mainloop()

我已经将代码简化到可以看到我要做什么的最低限度。问题似乎不是放在表中的位置,就是尝试解析它们(问题是1&2)。我对python很陌生,不知道怎么做。在当前状态下,项目失败,并返回in tableGen self.items[rowNum] = [entry, label] Name Error: name 'self' is not defined。在

我做错了吗?还有别的办法吗?在


解决方案

^{pr2}$

Tags: nameinselfdef条目itemswinlabel
1条回答
网友
1楼 · 发布于 2024-10-02 18:24:07

使用^{}将项添加到列表末尾:

def tableGen(name):
    ...
    items.append([entry, label])
    rowNum += 1

这将生成一个列表列表,因此您需要使用索引来访问每个项目的元素:

^{pr2}$

相关问题 更多 >