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'
。为什么这不起作用,我该如何解决?
答案 0 :(得分:3)
它不起作用的原因是因为与textvariable
关联的entryBox
不是Tkinter变量类的实例:BooleanVar,DoubleVar,IntVar,StringVar。 Tkinter会跟踪这些变量类的更新,并相应地更新小部件。 1}}等标准Python变量未被跟踪。
因此,您可以使用int
将userText.get()
(整数)的值传递给生成器函数:
IntVar
或者您可以忘记userText = IntVar()
def leftClick(event):
generator(userText.get())
变量并直接从userText
获取当前值:
entryBox
但我认为前者略胜一筹。