当使用 IntVar 获取 Entry 小部件的内容时,如果整数左补零,结果是错误的。例如,如果输入框包含“05000”,则 IntVar 值为 2560。
这个问题可以通过不使用 IntVar 并直接在 python 中重新转换整数来轻松解决int(entry.get())。我只是好奇是什么导致了这个问题;我不明白究竟发生了哪个重铸错误。
下面是重现问题的玩具示例:
import tkinter as tk
def print_values():
print("Value 0 - entry: '{}' - integer: {}".format(entry0.get(), int0.get()))
print("Value 1 - entry: '{}' - integer: {}".format(entry1.get(), int1.get()))
if __name__ == "__main__":
root = tk.Tk()
int0 = tk.IntVar(root, 5)
tk.Label(root, text="Value 0").grid(row=0, column=0)
entry0 = tk.Entry(root, textvariable=int0)
entry0.insert(0, "0000")
entry0.grid(row=0, column=1)
int1 = tk.IntVar(root, 5)
tk.Label(root, text="Value 1").grid(row=1, column=0)
entry1 = tk.Entry(root, textvariable=int1)
entry1.insert(0, "0")
entry1.insert("end", "000")
entry1.grid(row=1, column=1)
tk.Button(root, text="Print", command=print_values).grid(row=2, column=1)
print_values()
root.mainloop()
“00005”的值正确,而“05000”的值不正确。
慕尼黑8549860
相关分类