Python 3和TKinter - 无法通过my_var.get()

时间:2016-12-14 19:52:23

标签: python tkinter

我试图将Entry字段值传递给第二个函数,但我只得到一个空字符串。谁能告诉我我失踪了什么?这是我的代码:

def fenetre_changer_nom_joueur(self,joueur):

    self.changer_nom_main = Tk()
    self.changer_nom_main.geometry('300x200')
    self.string_nom_joueur = StringVar()
    Entry(self.changer_nom_main, textvariable=self.string_nom_joueur).grid(row=2, column=2, sticky=W)
    Button(self.changer_nom_main, text="Enregistrer",command = lambda: self.changer_nom_joueur(joueur), padx=10,
           pady=10).grid(row=3, column=1, sticky=W)
    Button(self.changer_nom_main, text="Fermer", width=13,
           command=lambda: self.fermer_fenetre(self.changer_nom_main), padx=10,
           pady=10).grid(row=3, column=2, sticky=W)
    self.changer_nom_main.mainloop()


def changer_nom_joueur(self, joueur):
    """
   This is where I'm tring to get the Entry field value. But the .get() return an emptry string
    """
    temp = self.string_nom_joueur.get()
    joueur.nom = temp

1 个答案:

答案 0 :(得分:-1)

Entry(self.changer_nom_main, textvariable=self.string_nom_joueur).....

此行将textvariable设置为self.string_nom_joueur。我想你想要做的是相反的。您希望self.string_nom_joueur是textvariable。

首先需要将Entry分配给变量,即:

self.entrynamefield = Entry(self.changer_nom_main, textvariable=self.string_nom_joueur).....

然后你需要使用.set()方法来设置self.string_nom_joeuer:

self.string_nom_joeuer.set(self.entrynamefield.get())

设置完字符串变量后,你的函数changer_nom_joueur会有“.get()”