小编Flo*_*ent的帖子

在tkinter中,为什么IntVar/Entry的组合在使用零填充时会返回错误的整数?

使用IntVar获取Entry小部件的内容时,如果整数保留为零填充,则结果错误.例如,如果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()
Run Code Online (Sandbox Code Playgroud)

"00005"的值是正确的,而"05000"的值不是.

python tkinter

1
推荐指数
1
解决办法
51
查看次数

标签 统计

python ×1

tkinter ×1