当我输入这行代码时,我不断得到py_var0

时间:2016-10-29 12:08:27

标签: python function tkinter textbox self

from tkinter import *
import random
root = Tk()
name = StringVar()

class Window(Frame):

    def __init__(self, master = None):

        Frame.__init__(self, master)
        self.master = master
        self.init_window()

    def init_window(self):

        self.master.title("Are you smart enough?")
        self.pack(fill=BOTH, expand="no")

        self.entry = Entry(root,textvariable=name)
        self.entry.pack()

        enterButton = Button(self, text="Enter", command=self.client_enter)
        enterButton.pack(side="top", fill="none", expand="True", anchor = "s")

    def client_enter(self):

        text = name.get()
        textlabel = Label(self, text=name).pack()

app = Window(root)
root.geometry("1200x600")
root.mainloop()

出于某种原因,当我输入名称并按“Enter”按钮时,什么都没有显示 我如何在Tkinter上说出(“欢迎”,姓名)?

1 个答案:

答案 0 :(得分:1)

似乎变量text包含正确的值,但您显示的是nameStringVar}。

替换它:

textlabel = Label(self, text=name).pack()

由此:

textlabel = Label(self, text=text).pack()

要说出"Welcome, name",请更改text的定义:

text = "Welcome, {}".format(name.get())

此外,如果您在其定义中添加textlabel,则.pack()将变得无用。你应该这样做:

textlabel = Label(self, text=text)
textlabel.pack()

或者像这样,如果你不需要将它存储在一个变量中:

Label(self, text=text).pack()