【发布时间】:2025-12-22 05:00:12
【问题描述】:
在我的程序中有一个字段,用户可以在其中输入姓名,之后该姓名将保存在“个人”列表中。
之后,用户进入一个新页面,在那里他可以查看包含所有输入名称的列表,如有必要,可以返回上一页添加另一个名称。
一切都会好的,但是在“个人”列表中输入的所有名称都不会显示在下一页的列表框中,而我可以看到它们在控制台列表中的显示方式。
我想知道如何将这些名称从列表附加到列表框。
我的代码:
from tkinter import *
import tkinter.ttk as ttk
class CollegeApp(Tk):
def __init__(self):
Tk.__init__(self)
container = ttk.Frame(self)
container.pack(side="top", fill="both", expand=True)
self.frames = {}
for F in (IndividPage, listCheckPage):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(IndividPage)
self.lift()
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class IndividPage(ttk.Frame):
def __init__(self, parent, controller):
self.controller = controller
ttk.Frame.__init__(self, parent)
self.userEntry()
def userEntry(self):
headingTest = Label(self, text="Enter your UserName:", font="Arial 20")
headingTest.grid(row=0, column=0, pady=5, padx=5)
self.usernameEnter = Entry(self, width=40)
self.usernameEnter.grid(row=0, column=1, padx=5, pady=5)
confirmBtn = Button(self, text="Confirm User", font="Arial 16",
command=self.confirm)
confirmBtn.config(height=4, width=12)
confirmBtn.grid(row=2, column=2, sticky=E, padx=45, pady=360)
def confirm(self):
if self.add_to_indivList():
self.controller.show_frame(listCheckPage)
def add_to_indivList(self):
users = self.usernameEnter.get()
Individuals.append(users)
processedInd = list(dict.fromkeys(Individuals))
self.controller.show_frame(listCheckPage)
print(processedInd)
class listCheckPage(ttk.Frame):
def __init__(self, parent, controller):
self.controller = controller
ttk.Frame.__init__(self, parent)
self.userEntry()
def userEntry(self):
indList = Listbox(self)
indList.config(height=13, width=15)
indList.grid(row=1, column=0, padx=10, pady=20)
for user in Individuals:
indList.insert(user)
INDHeading = Label(self, text="Individuals", font="Arial 16")
INDHeading.grid(row=0, column=0, pady=0, padx=15, sticky=N)
addUserBtn = Button(self, text="Add User", font="Arial 16",
command=lambda: self.controller.show_frame(IndividPage))
addUserBtn.config(height=3, width=80)
addUserBtn.grid(row=2, column=0, columnspan=5, pady=0, sticky=N)
BackBtn = Button(self, text="BACK", font="Arial 16",
command=lambda:self.controller.show_frame(IndividPage))
BackBtn.config(height=2, width=12)
BackBtn.grid(row=4, column=0, sticky=W, padx=0, pady=0)
if __name__ == '__main__':
Individuals = []
app = CollegeApp()
app.geometry("800x500")
app.title('Points Counter')
app.mainloop()
【问题讨论】:
-
有多少人会问几乎相同的问题?我已经看到这个代码至少 2 次了,两次有同样的问题
-
@Matiiss,其实这不是“很多人”,我写了所有这些问题,因为我在编程方面是零,但是我尝试自己写一个程序,但是所有的问题我在写代码的时候就有了,我在这里发帖是为了更快地找到解决方案,因为我现在的时间非常有限
标签: python python-3.x list tkinter listbox