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() 

你的递归函数非常好,但还有其他几个 你的代码有问题。

最主要的是Buttoncommand参数必须是 当用户按下按钮时将调用的函数。在 您的代码 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()