【问题标题】:Retrieve text from entry widget Tkinter从条目小部件 Tkinter 中检索文本
【发布时间】:2015-04-17 00:53:49
【问题描述】:

所以我知道如何使用 get 函数从单个条目小部件中检索文本,但现在我正在尝试使用 for 循环同时创建多个条目小部件。一旦用户键入它们,我如何返回并从任何条目小部件中检索文本?

rows=11
for line in range(10):
    rows=rows+1
    widget = Tk.Entry(self.frame)
    widget.grid(row=rows, column=5)

【问题讨论】:

    标签: python loops variables for-loop tkinter


    【解决方案1】:

    问题是您的所有小部件对象都被分配给一个引用,并且循环的每次下一次迭代都没有被引用。解决此问题的一种方法是创建一个列表并将这些小部件添加到列表中:

    entries = []
    for line in range(10):
        rows = rows + 1
        widget = Tk.Entry(self.name)
        widget.grid(row = rows, column = 5)
        entries.append(widget)          # Add this line to your code
    

    现在,要访问特定的输入框,您只需在数组中找到它。因此,例如,第二个框将位于entries[1](因为它是从 0 开始的)。

    【讨论】:

      【解决方案2】:

      您遇到的根本问题是您没有任何类型的数据结构。你熟悉list 类型吗?

      rows=11
      entries = [Tk.Entry(self.frame) for item in range(10)]
      for item in entries:
          rows=rows+1
          item.grid(row=row, column=5)
      

      这会创建一个listEntry 小部件,然后将listgrids 每一个都排成一行(从12 开始)。您可以按索引访问list 项目,例如entries[0] 第一个 Entry

      【讨论】:

        【解决方案3】:
        widgets = []
        
        for i in range(11, 23):
            widgets.append(Tk.Entry(self.frame))
            widget[i-11].grid(row = i, column = 5)
        

        【讨论】:

        • 我知道如何从一个条目小部件中获取值,如上所述。我现在处于 for 循环中。如果我想检索第 5 个条目 widgit 中的内容,我该怎么做?
        • @userlincolndc: widget[4].get()(列表从零开始计数,因此第 5 个条目位于索引 4)
        【解决方案4】:

        要直接回答您的问题,您需要 get() 方法,该方法可用于 Entry 类。要获取小部件对象的值,代码如下所示:

        myValue = widget.get()
        

        请注意,正如其他人所提到的,您的“for”循环实际上并没有创建 10 个 Entry 对象。由于您不断将新的 Entry 对象重新分配给变量“widget”,因此您创建的旧 Entry 对象将被取消引用。与其将每个新的 Entry 对象分配给变量“widget”,不如将它们附加到一个列表中。

        【讨论】:

        • 您的措辞有点误导。该循环确实创建了 10 个 Entry 对象(小部件)。它没有创建 10 个对 Entry 小部件的 引用
        猜你喜欢
        • 2021-11-15
        • 2014-10-06
        • 2013-01-15
        • 2019-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多