Tkinter - Entry .get()函数

时间:2015-12-30 23:26:03

标签: python tkinter tk

class FCMenu:
def __init__(self,master):
    frame=Frame(master)
    frame.pack()
    Label(frame, text="What is the number?").grid(row=0)
    self.num = IntVar()
    self.entry = Entry(frame,textvariable=self.num).grid(row=1)
    button = Button(frame, text="Factorize", command=self.calc).grid(row=2)
    self.resultvar = StringVar()
    Label(frame, textvariable=self.resultvar).grid(row=3)

def calc(self):
    e = int(self.entry.get())
    print(e,self.num.get())
    ...

我正在尝试使用tkinter创建一个Python GUI,如上所示。但是,每次我在条目或textvariable上调用.get()时,它都会失败。通过条目本身,它解释了NoneType没有.get()函数。如果我删除它并仅使用self.num.get(),它将打印0或0.0,具体取决于我是否将其转换为整数。如果我将self.num转为StringVar,则根本不会打印任何内容。简单地说,我找不到获取我想要检索的输入的方法。

1 个答案:

答案 0 :(得分:0)

制作代码的简化版本,并在更改Entry窗口小部件时正确打印。代码中的其他地方可能出错吗?还是错误的缩进?这是我测试的代码(这是2.7代码,但也使用3.5版本的代码):

import Tkinter as tk

class FCMenu:
    def __init__(self, master):
        frame = tk.Frame(master)

        self.num = tk.IntVar()
        self.entry = tk.Entry(frame, textvariable=self.num)
        self.button = tk.Button(frame, text='Calc', command=self.calc)

        frame.pack()
        self.entry.pack()
        self.button.pack()

    def calc(self):
        print(self.num.get(), self.entry.get())

root = tk.Tk()
frame = FCMenu(root)
root.mainloop()

self.num.get()self.entry.get()打印。第一个是Int,第二个是String