当我将值返回到一组文本字段并希望在相应的按钮中显示相同的条目集时,我只能使用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)
函数的按钮。
答案 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()