<p>您正在创建小部件行。每一行可能比其他行有更多或更少的小部件。在某些时候,您需要获得一个表示每行中的数据的列表。你在问,“我怎么得到这个单子?”。我说的对吗?在</p>
<p>关于这个简单的问题,你一定问了20个问题。问题不在这个或任何其他单一的功能,而是在你的一般架构。一个非常非常聪明的程序员曾经告诉我“如果你想让我理解你的代码,不要给我看你的代码,给我看看你的数据结构”。这里的根本问题是,您没有数据结构。如果你不整理你的数据,你就不可能希望轻易地得到这些数据。在</p>
<p>这个问题没什么难的。为每一行保留一个条目小部件的列表,并在需要值时遍历该列表。下面的伪代码显示了这有多简单:</p>
<pre><code>class MyApp(object):
def __init__(self):
# this represents your data model. Each item in the
# dict will represent one row, with the key being the
# row number
self.model = {}
def add_row(self, parent, row_number):
'''Create a new row'''
e1 = Entry(parent, ...)
e2 = Entry(parent, ...)
e3 = Entry(parent, ...)
...
# save the widgets to our model
self.model[row_number] = [e1, e2, e3]
def extend_row(self, parent, row_number, n):
'''Add additional widgets to a row'''
for i in range(n):
e = Entry(parent, ...)
self.model[row_number].append(e)
def get_values(row_number):
'''Return the values in the widgets for a row, in order'''
result = [widget.get() for widget in self.model[row_number]]
return result
</code></pre>