只存储最后的输入?编程

2024-04-29 20:37:26 发布

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

我希望用户输入每家电影院的已售出门票数量。然而,这只是存储在变量“sålda”中的最后一个输入。我怎样才能解决这个问题

def part_of_function():

        bio1 = []

      
        i = 0
        for elements in BIOGRAFVAL:
            vuxen = StringVar()
            pensionär = StringVar()
            barn = StringVar()

            
            Label(fönster4, text= BIOGRAFVAL[i]).pack()
            Label(fönster4, text="Skriv in antal biljetter av varje sort du vill köpa").pack()
            Label(fönster4, text="Max antal platser för " + BIOGRAFVAL[i] + " är " + str(PLATSER[i])).pack()

            
            personer = [('vuxen',vuxen),('pensionär', pensionär), ('barn',barn)]
            
            for p in personer:
                sålda = välj_biograf(fönster4, p[0] + "biljett", p[1]) #välj_biograf is called*
                sålda.pack()
            i += 1

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


        def info(): 
            fönster5=Tk()
            fönster5.title("Biljettförsäljning för EN biograf.")
            fönster5.geometry("350x200")

            bio1.append(sålda.get())
            print(bio1)  #here is only the last element printed 


            """ *code for the function "välj_biograf" that is called
            def välj_biograf(fönster, person_typ, text_variabel):
            Label(fönster, text=person_typ).pack()
            sålda = Entry(fönster, textvariable=text_variabel)
            sålda.pack()
            return sålda """

Tags: textinfordeflabelpackldalj
1条回答
网友
1楼 · 发布于 2024-04-29 20:37:26

bio1part_of_function函数内的局部变量。每次函数结束时,它的值都会丢失,下次调用函数时会再次重置回空白列表

在函数外部创建bio1空列表(使其成为全局的),然后在函数内部使用global bio,以便修改全局变量

还要注意,在代码中应该只有一个Tk()实例。我怀疑你的代码中有不止一个。如果您想要一个新窗口,请使用Toplevel()

正如CoolCloud所指出的,您需要使用.get来获取personer/p的值

sålda = välj_biograf(fönster4, p[0] + "biljett", p[1].get())

元组p的元素1是一个StringVar,因此需要使用.get()来获取它的值

相关问题 更多 >