从文本字段小部件中获取所有值并将其返回给按钮小部件

时间:2019-12-23 05:27:18

标签: python tkinter

当我将值返回到一组文本字段并希望在相应的按钮中显示相同的条目集时,我只能使用Tkinter python 3将最后输入的文本值返回到所有按钮中。相应按钮字段中的相应文本值?这是它的相应代码。

def inputt(self):
    x = int(self.number.get())
    entries_list=[]
    path_list=[]
    button_list=[]
    label_list=[]
    button_1_list=[]

    for i in range(0,x):
        l = Label(root,text="Device "+str(i+1)+":")
        l.grid(row=i+5,column=0)
        label_list.append(l)

        self.e = Entry(root)
        self.e.grid(row=i+5,column=1)
        entries_list.append(self.e)

        b1 = Button(root,text="Next",command=lambda:load(self,self.inputt))
        b1.grid(row=i+6,column=0)

def load(self, inputt):
    for i in range(0,x):
        b3=Button(root, text=self.e[i].get())
        b3.grid(row=i+100,column=0)
        button_list.append(b3)

对于给定的文本输入,我想将值返回到Def(load)函数的按钮。

1 个答案:

答案 0 :(得分:0)

声明窗口小部件的变量需要分别声明,否则最后一个变量将覆盖当前窗口小部件,并且在调用它时,它将仅显示最后一个窗口小部件值。

这可以通过列举列表来解决。枚举技术为对象建立索引,并同时从列表中选择每个对象。

还需要声明Entry窗口小部件的每个文本变量分别声明。为此,每个变量都将追加到列表中,然后在调用变量时枚举该列表。

这是一个解决方案,

import tkinter
from tkinter import *

root = Tk()

entries_list = []
path_list = []
button_list = []
label_list = []
var_list = []
x = 5    #int variable that define how many times will loop run

for var in range(0,x): 
    #always define a variable type before adding it to Entry Box
    se = StringVar()
    var_list.append(se)

def inputt():
    # use enumerate for indexing the list
    for p,q in enumerate(var_list):
        l = Label(root,text="Device "+str(p+1)+":")
        l.grid(row=p,column=0)
        label_list.append(l)

        e = Entry(root, textvariable = var_list[p], width=25)
        e.grid(row=p, column=1)

    b1 = Button(root,text="Next",command=lambda:load())
    b1.grid(row=p+2,column=0)


def load():
    # Entered values will loaded to entries_list when next button is pressed
    for u,v in enumerate(var_list):
        entries_list.append(var_list[u].get())

    for j,k in enumerate(entries_list):
        b3=Button(root, text=k)
        b3.grid(row= j + x + 2,column=0,columnspan = 2,sticky = EW)
        button_list.append(b3)

inputt()
root.mainloop()