首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将用户输入存储在tkinter中的列表中?

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

Stack Overflow用户
提问于 2020-12-08 12:06:41
回答 1查看 393关注 0票数 0

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

以后我需要访问每个元素,因此我想将它们存储在一个列表中。然而,当我试图将用户的输入存储在一个列表中,然后打印它时,它要么是空白的,要么是填充了最近的输入。我该怎么解决这个问题?

def help():

代码语言:javascript
复制
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()  '''
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-08 13:58:56

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

代码语言:javascript
复制
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()之外声明列表,比如:

代码语言:javascript
复制
vuxenlista = []
pensionärlista = []
barnlista = []
def help():
    #same bunch of codes....
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65198599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档