从条目小部件中获取值并创建变量列表Tkin

2024-10-03 23:19:34 发布

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

我有下面的代码,它工作,并给我每个值。一旦收集到所有的值,我似乎无法创建一个列表。我现在一次只能得到一个值。。!我试过以下两种方法:

def numberwritten(self, event, key, index):
    self.values = []
    if not self.left[index]:
        self.box[key].config(fg='black')
        self.left[index] = True
        self.values.append(self.box[key].get())
        print self.values

每次只打印一个值,但我想要一个可以分配'n'个变量的列表(每次获得的值的数量随机变化)。在

例如“值%s”%I=获得的值。在


Tags: 方法key代码selfboxeventconfig列表
2条回答

每次调用self.values = []时,self.values = []正在清除列表,因此您只打印一个值。全局声明self.values,或者在类的__init__()函数中声明。在

对于在每次循环迭代期间打印一个值的格式,请尝试如下操作:

print("Value %i = %s" % (index, self.box[key].get())

编辑:我从thisanswer借用了以下内容:如果您确实想在每次循环迭代中打印整个列表:

^{pr2}$

您正在创建小部件行。每一行可能比其他行有更多或更少的小部件。在某些时候,您需要获得一个表示每行中的数据的列表。你在问,“我怎么得到这个单子?”。我说的对吗?在

关于这个简单的问题,你一定问了20个问题。问题不在这个或任何其他单一的功能,而是在你的一般架构。一个非常非常聪明的程序员曾经告诉我“如果你想让我理解你的代码,不要给我看你的代码,给我看看你的数据结构”。这里的根本问题是,您没有数据结构。如果你不整理你的数据,你就不可能希望轻易地得到这些数据。在

这个问题没什么难的。为每一行保留一个条目小部件的列表,并在需要值时遍历该列表。下面的伪代码显示了这有多简单:

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

相关问题 更多 >