我的条目只会返回0.(Python)

时间:2015-07-13 02:54:24

标签: python tkinter

from tkinter import *


def generator(n):
    print((n*(n+1))/2)

root = Tk()

userText = int()
entryBox = Entry(root, textvariable=userText)
entryBox.grid(column=0)
generateButton = Button(root, text='Generate')
generateButton.grid(row=0, column=1)


def leftClick(event):
    generator(userText)


generateButton.bind('<Button-1>', leftClick)

root.mainloop()

我使用此代码通过创建一个界面来练习使用Tkinter,我可以输入一个数字&#39; n&#39;然后单击“生成”按钮以生成三角形数字序列中的第n个项。我几乎已经弄明白了如何正确使用这个输入框功能,但是当我在运行此代码后输入任何数字时,我会得到一个&#39; 0.0&#39;回。另外,我尝试使用IntVar()而不是int()作为userText,但IntVar()刚刚返回此错误:TypeError: unsupported operand type(s) for +: 'IntVar' and 'int'。为什么这不起作用,我该如何解决?

1 个答案:

答案 0 :(得分:3)

它不起作用的原因是因为与textvariable关联的entryBox不是Tkinter变量类的实例:BooleanVar,DoubleVar,IntVar,StringVar。 Tkinter会跟踪这些变量类的更新,并相应地更新小部件。

因此,您可以使用intuserText.get()(整数)的传递给生成器函数:

IntVar

或者您可以忘记userText = IntVar() def leftClick(event): generator(userText.get()) 变量并直接从userText获取当前值:

entryBox

但我认为前者略胜一筹。