【问题标题】:how to use a for loop through variables that call the same function如何通过调用相同函数的变量使用for循环
【发布时间】:2022-01-10 06:45:38
【问题描述】:

我正在做一些测试来创建一个 GUI 来提高我在工作中的表现,我需要创建 10 个条目并使用一个按钮,分别获取所有的值,在此代码的情况下只需保存在一个列表框,但我相信有一种方法可以通过循环来执行此操作,因为我必须使用不同名称的变量调用同一个函数 10 次并获取每个变量,创建 10 个获取和 10 个插入,这使我的代码很大,肮脏和可怕的阅读。 (对不起,奇怪的英语,我是用谷歌翻译翻译的)

    from tkinter import *
    from tkinter import ttk


    class Criar_input(object):
      def __init__(self, master):
      self.master = master

      self.input = Entry(master)
      self.input.pack()


      def getting(): 
        frase_1 = input_1.input.get()
        frase_2 = input_2.input.get()
        frase_3 = input_3.input.get()
        frase_4 = input_4.input.get()
        frase_5 = input_5.input.get()
        frase_6 = input_6.input.get()
        frase_7 = input_7.input.get()
        frase_8 = input_8.input.get()
        frase_9 = input_9.input.get()
        frase_10 = input_10.input.get()
        lb.insert(0, frase_1)
        lb.insert(1, frase_2)
        lb.insert(2, frase_3)
        lb.insert(3, frase_4)
        lb.insert(4, frase_5)
        lb.insert(5, frase_6)
        lb.insert(6, frase_7)
        lb.insert(7, frase_8)
        lb.insert(8, frase_9)
        lb.insert(9, frase_10)


     def get_input(master):
        bt = Button(master, text='Pressione', command=getting)
        bt.pack(side='bottom', expand=1)


     app = Tk()

     input_1 = Criar_input(app)
     input_2 = Criar_input(app)
     input_3 = Criar_input(app)
     input_4 = Criar_input(app)
     input_5 = Criar_input(app)
     input_6 = Criar_input(app)
     input_7 = Criar_input(app)
     input_8 = Criar_input(app)
     input_9 = Criar_input(app)
     input_10 = Criar_input(app)

     lb = Listbox(app)
     lb.pack(side='bottom', expand=1)
     get_input(app)

     app.mainloop()

【问题讨论】:

    标签: python class for-loop tkinter


    【解决方案1】:

    将小部件保存在列表中,然后在列表中循环。

    entries = []
    for i in range(10):
        entry = Entry(...)
        entries.append(entry)
    

    当你需要获取所有数据时,你可以遍历小部件列表

    for entry in entries:
        data = entry.get()
        lb.insert("end", data)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-20
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      • 2016-07-30
      相关资源
      最近更新 更多