Python:基于 GUI "reverse entry" 使用递归失败
Python: GUI based "reverse entry" using recursion failing
我正在尝试制作一个 Python 程序,该程序要求用户输入一个数字,然后使用递归将其反转。我的尝试在下面,但我的代码给了我 TypeError: unsupported operand type(s) for //: 'Entry' and 'int' - 有什么想法吗?
from tkinter import *
def reverseInteger(n, r):
if n==0:
return r
else:
return reverseInteger(n//10, r*10 + n%10)
window = Tk()
window.title("Reverse Integer")
frame1 = Frame(window)
frame1.pack()
number = StringVar()
numEntry = Entry(frame1, textvariable=number)
btGetName = Button(frame1, text = "Calculate", command = reverseInteger(numEntry, 0))
label3 = Label(frame1)
numEntry.grid(row = 1, column = 1)
btGetName.grid(row = 1, column = 2)
label3.grid(row = 2, column = 1, sticky="w")
window.mainloop()
你的递归函数非常好,但还有其他几个
你的代码有问题。
最主要的是Button
的command
参数必须是
当用户按下按钮时将调用的函数。在
您的代码 command
设置为 reverseInteger
的 return 值
这是一个整数。所以这里就有问题了。
而且在我看来你想把你的结果
在 label3
中计算,所以你的 StringVar
应该附在上面
而不是 numEntry
.
所以这是一个我觉得还可以的版本:
from tkinter import *
def reverseInteger(n, r):
if n==0:
return r
else:
return reverseInteger(n//10, r*10 + n%10)
def reverse(): # called when the user click on the button
value = reverseInteger(int(numEntry.get()), 0)
number.set(value) # change the text of the label
window = Tk()
window.title("Reverse Integer")
frame1 = Frame(window)
frame1.pack()
number = StringVar()
numEntry = Entry(frame1)
btGetName = Button(frame1, text = "Calculate", command = reverse)
label3 = Label(frame1, textvariable=number)
numEntry.grid(row = 1, column = 1)
btGetName.grid(row = 1, column = 2)
label3.grid(row = 2, column = 1, sticky="w")
window.mainloop()
我正在尝试制作一个 Python 程序,该程序要求用户输入一个数字,然后使用递归将其反转。我的尝试在下面,但我的代码给了我 TypeError: unsupported operand type(s) for //: 'Entry' and 'int' - 有什么想法吗?
from tkinter import *
def reverseInteger(n, r):
if n==0:
return r
else:
return reverseInteger(n//10, r*10 + n%10)
window = Tk()
window.title("Reverse Integer")
frame1 = Frame(window)
frame1.pack()
number = StringVar()
numEntry = Entry(frame1, textvariable=number)
btGetName = Button(frame1, text = "Calculate", command = reverseInteger(numEntry, 0))
label3 = Label(frame1)
numEntry.grid(row = 1, column = 1)
btGetName.grid(row = 1, column = 2)
label3.grid(row = 2, column = 1, sticky="w")
window.mainloop()
你的递归函数非常好,但还有其他几个 你的代码有问题。
最主要的是Button
的command
参数必须是
当用户按下按钮时将调用的函数。在
您的代码 command
设置为 reverseInteger
的 return 值
这是一个整数。所以这里就有问题了。
而且在我看来你想把你的结果
在 label3
中计算,所以你的 StringVar
应该附在上面
而不是 numEntry
.
所以这是一个我觉得还可以的版本:
from tkinter import *
def reverseInteger(n, r):
if n==0:
return r
else:
return reverseInteger(n//10, r*10 + n%10)
def reverse(): # called when the user click on the button
value = reverseInteger(int(numEntry.get()), 0)
number.set(value) # change the text of the label
window = Tk()
window.title("Reverse Integer")
frame1 = Frame(window)
frame1.pack()
number = StringVar()
numEntry = Entry(frame1)
btGetName = Button(frame1, text = "Calculate", command = reverse)
label3 = Label(frame1, textvariable=number)
numEntry.grid(row = 1, column = 1)
btGetName.grid(row = 1, column = 2)
label3.grid(row = 2, column = 1, sticky="w")
window.mainloop()