Python 如何创建大量标签和条目小部件,并在Tkinter with loop中从中获取数据
我需要使用Tkinker创建几个标签和输入字段,它们都是相同的,唯一的区别是标签中的文本,我可以在列表中看到。 这就是问题看起来的样子,虽然用一种简单的方法来解决,但我想更聪明地解决它,使用某种循环,这样我就可以扩展它Python 如何创建大量标签和条目小部件,并在Tkinter with loop中从中获取数据,python,tkinter,Python,Tkinter,我需要使用Tkinker创建几个标签和输入字段,它们都是相同的,唯一的区别是标签中的文本,我可以在列表中看到。 这就是问题看起来的样子,虽然用一种简单的方法来解决,但我想更聪明地解决它,使用某种循环,这样我就可以扩展它 from tkinter import * root = Tk() question1 = Label(root, text="Please give data number one") question1.grid(row=1, column=0) field1 = Ent
from tkinter import *
root = Tk()
question1 = Label(root, text="Please give data number one")
question1.grid(row=1, column=0)
field1 = Entry(root)
field1.grid(row=1, column=1)
question2 = Label(root, text="Please give data number two")
question2.grid(row=2, column=0)
field2 = Entry(root)
field2.grid(row=2, column=1)
question3 = Label(root, text="Please give data number three")
question3.grid(row=3, column=0)
field3 = Entry(root)
field3.grid(row=3, column=1)
question4 = Label(root, text="Please give data number four")
question4.grid(row=4, column=0)
field4 = Entry(root)
field4.grid(row=4, column=1)
data1 = field1.get()
data2 = field2.get()
data3 = field3.get()
data4 = field4.get()
root.mainloop()
我考虑过类似的事情,但我不知道如何从Enter小部件中获取值
from tkinter import *
root = Tk()
questions = ["Please give data number one",
"Please give data number two"
"Please give data number three"
"Please give data number four"
]
for question in enumerate(questions):
ask = Label(root, text=question[1])
ask.grid(row=(question[0] + 1), column=0)
field = Entry(root)
field.grid(row=(question[0] + 1), column=1)
root.mainloop()
你需要做两件事:
首先保留对小部件的引用,然后使用get方法获取字符串
例如:
self.entry = Entry(...)
…一些代码
print("the text is", self.entry.get())
示例获取条目:
class InputPage(Frame):
def __init__(self, parent, controller):
Frame.__init__(self,parent)
label = Label(self, text="Please give data number four")
label.grid(row=0, column=0, sticky ='n', columnspan =2)
# i brought your variable in the class for example sake
namesInput = ["First:", "second:", "Third:", "Fourth:", "Fifth:"]
self.entryWidgets = [] # we want to call this in another function so we assign it as self.variableName
labelWidgets = []
#LOOP TO CREATE WIDGETS
for i in range(0, len(namesInput)):
labelWidgets.append(Label(self, text = namesInput[i]))
self.entryWidgets.append(Entry(self))
labelWidgets[-1].grid(row= i+1, column =0, sticky='e')
self.entryWidgets[-1].grid(row= i+1, column = 1, sticky='w')
submit = Button(self, text = "Submit", command = self.getEntries)
submit.grid(row = 6, column =0, columnspan =2)
def getEntries(self):
results = []
for x in self.entryWidgets: # i.e for each widget in entryWidget list
results.append(x.get())
print(results)
你需要做两件事:
首先保留对小部件的引用,然后使用get方法获取字符串
例如:
self.entry = Entry(...)
…一些代码
print("the text is", self.entry.get())
示例获取条目:
class InputPage(Frame):
def __init__(self, parent, controller):
Frame.__init__(self,parent)
label = Label(self, text="Please give data number four")
label.grid(row=0, column=0, sticky ='n', columnspan =2)
# i brought your variable in the class for example sake
namesInput = ["First:", "second:", "Third:", "Fourth:", "Fifth:"]
self.entryWidgets = [] # we want to call this in another function so we assign it as self.variableName
labelWidgets = []
#LOOP TO CREATE WIDGETS
for i in range(0, len(namesInput)):
labelWidgets.append(Label(self, text = namesInput[i]))
self.entryWidgets.append(Entry(self))
labelWidgets[-1].grid(row= i+1, column =0, sticky='e')
self.entryWidgets[-1].grid(row= i+1, column = 1, sticky='w')
submit = Button(self, text = "Submit", command = self.getEntries)
submit.grid(row = 6, column =0, columnspan =2)
def getEntries(self):
results = []
for x in self.entryWidgets: # i.e for each widget in entryWidget list
results.append(x.get())
print(results)
对不起,我不知道你的意思是什么,也不知道你发送的代码如何帮助我,也许我对这种方式的理解太糟糕了。你想把数组中的每个元素分配给for循环中的标签吗?是的,这是可行的,但我不知道在用户填充条目小部件后如何从条目小部件中获取数据。field.get函数给出了我从第4位开始的最后一个值widget@katek1094请在问题:results.appendx.get printresults中为x测试:result=[]我编辑了关于如何创建小部件和获取实体的循环的答案。对不起,我不知道你的意思,以及你发送的代码如何帮助我,也许我这样理解太糟糕了。是否要将数组中的每个元素分配给for循环中的标签?是的,这是可行的,但我不知道在用户填充条目小部件后如何从条目小部件中获取数据。field.get函数给出了我从第4位开始的最后一个值widget@katek1094请在questions:results.appendx.get printresults中为x测试:result=[]我编辑了如何循环创建小部件和获取实体的答案。