很抱歉我认为这是一个愚蠢的问题。这似乎应该很简单。我正试图从一个循环生成的输入框中创建一个列表。
我有两个列表,一个列表"myLabelList"包含"作业名称、项目名称"等信息,另一个空列表"myEntryLists"用于捕获条目中的信息。
问题是,当iprint(myEntryList)
时,它似乎显示的是关于条目的信息,而不是输入本身。我有一个变通办法,但它就是这样。
很抱歉,如果我的格式不好,这是我的第一篇文章。
from tkinter import *
root = Tk()
root.title("Job Information Entry")
root.geometry("400x150")
topFrame = Frame(root)
bottomFrame = Frame(root)
topFrame.grid(row=0, column=0)
bottomFrame.grid(row=1, column=0)
myLabelList = ["Enter Job Number", "Enter Project Name", "Enter Job Name", "Enter Drawing Number"]
myEntryList = []
lst = []
# this is where i seem to be having problems
def ok_button_click():
for entry in myEntryList: # this is my workaround
lst.append(entry.get()) # this is my workaround
print(myEntryList) # this is what im getting
print(lst) # this is what i want to print()
x = 0
for i in myLabelList:
myLabel = Label(topFrame, text=i)
myEntry = Entry(topFrame, width=50)
myLabel.grid(row=x, sticky=E)
myEntry.grid(row=x, column=1)
x = x + 1
myEntryList.append(myEntry)
# bottomFrame
okButton = Button(bottomFrame, text="OK", command=ok_button_click)
cancelButton = Button(bottomFrame, text="Cancel")
okButton.grid(row=0, column=0)
cancelButton.grid(row=0, column=1)
root.mainloop()
在这一行中,将Entry
小部件插入myEntryList
:
myEntryList.append(myEntry)
当您尝试打印它时,它会为您提供保存在列表中的Entry小部件的可打印表示。
如果您想获得输入本身,只需打印lst
列表即可。
编辑:
条目是一个对象。在OOP(面向对象编程(中,您定义了表示对象的类。每个对象都有属性和方法。你可以在这里阅读更多关于OOP的内容。
Entry小部件就是一个对象示例。它具有创建该类实例(Entry()
(的构造函数、类似'bg', 'fg'
的属性和类似get()
的方法。
当您向myEntryList
插入一个Entry小部件时,您将整个对象插入到列表中,而不是它所包含的输入。为了获得输入,您需要在Entry小部件上使用get()
方法。
我希望现在一切都清楚了:(