如何将用户输入存储在tkinter的列表中?

2024-05-28 19:36:52 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的程序中,我希望用户在数据库中插入每个电影院的成人票、老年票和儿童票的销售数量。因为我不希望代码过于重复,所以我认为创建for循环或类似的循环将是最好的选择

我以后需要访问每个元素,因此我希望将它们存储在列表中。但是,当我尝试将用户输入存储在列表中,然后打印它时,它要么是空白的,要么只是用最近的输入填充。我如何解决这个问题

def help():

vuxenlista = []
vuxen = StringVar()

pensionärlista = []
pensionär = StringVar()

barnlista = []
barn = StringVar()

Label(fönster4, text="Vuxenbiljett").pack()
sålda_vuxen = Entry(fönster4, textvariable=vuxen)
sålda_vuxen.pack()

Label(fönster4, text="Pensionärsbiljett").pack()
sålda_pensionär = Entry(fönster4, textvariable=pensionär)
sålda_pensionär.pack()

Label(fönster4, text="Barnbiljett").pack()
sålda_barn = Entry(fönster4, textvariable=barn)
sålda_barn.pack()

vuxenlista.append(sålda_vuxen.get())
pensionärlista.append(sålda_pensionär.get())
barnlista.append(sålda_barn.get())



Button(fönster4, text="fortsätt2", command=lambda: info()).pack()

'''if elements == BIOGRAFVAL[0]:
            Label(fönster4, text="Vuxenbiljett").pack()
            sålda_vuxen1 = Entry(fönster4, textvariable=vuxen)
            sålda_vuxen1.pack()

            Label(fönster4, text="Pensionärsbiljett").pack()
            sålda_pensionär1 = Entry(fönster4, textvariable=pensionär)
            sålda_pensionär1.pack()
        
            Label(fönster4, text="Barnbiljett").pack()
            sålda_barn1 = Entry(fönster4, textvariable=barn)
            sålda_barn1.pack()

              
        if elements == BIOGRAFVAL[1]:
            Label(fönster4, text="Vuxenbiljett").pack()
            sålda_vuxen2 = Entry(fönster4, textvariable=vuxen)
            sålda_vuxen2.pack()

            Label(fönster4, text="Pensionärsbiljett").pack()
            sålda_pensionär2 = Entry(fönster4, textvariable=pensionär)
            sålda_pensionär2.pack()
        
            Label(fönster4, text="Barnbiljett").pack()
            sålda_barn2 = Entry(fönster4, textvariable=barn)
            sålda_barn2.pack()
            
        if elements == BIOGRAFVAL[2]:
            Label(fönster4, text="Vuxenbiljett").pack()
            sålda_vuxen3 = Entry(fönster4, textvariable=vuxen)
            sålda_vuxen3.pack()

            Label(fönster4, text="Pensionärsbiljett").pack()
            sålda_pensionär3 = Entry(fönster4, textvariable=pensionär)
            sålda_pensionär3.pack()
        
            Label(fönster4, text="Barnbiljett").pack()
            sålda_barn3 = Entry(fönster4, textvariable=barn)
            sålda_barn3.pack()  '''

Tags: textlabelpackentryldapensiontextvariablestringvar
1条回答
网友
1楼 · 发布于 2024-05-28 19:36:52

您应该理解,代码直到mainloop()只运行一次。因此,如果要向现有代码中添加额外内容,必须通过事件触发。做到这一点并不难。因为您没有提供可以运行的示例。下面是一个接收用户输入并附加到列表的示例

from tkinter import *

root = Tk()

def run():
    lst1.append(e1.get()) 
    lst2.append(e2.get())

    print(lst1,lst2)
lst1 = [] #this is very important
lst2 = [] 
e1 = Entry(root)
e1.pack(padx=30,pady=10)

e2 = Entry(root)
e2.pack(padx=10,pady=10)

Button(root,text='Append all the text',command=run).pack(pady=10)

root.mainloop()

在本例中,用户输入直接附加到列表中在所有函数之外初始化空列表非常重要,否则每次函数运行时都会用空列表重写当前列表。我想这就是你在代码中犯的错误。只需在help()之外声明列表,如:

vuxenlista = []
pensionärlista = []
barnlista = []
def help():
    #same bunch of codes....

相关问题 更多 >

    热门问题