在Tkinter Entry中使用逗号分隔

时间:2017-05-20 10:09:43

标签: python tkinter

在我的GUI中,我有很多Entry框。他们中的大多数用于大量,我想使用逗号分离。使用我的代码我能够这样做,但光标自动向右移动。自动插入逗号时。如何将此光标固定在最右侧,或者有任何改变我的代码的建议。

from tkinter import *
import locale

root = Tk()

a = StringVar()
b = Entry(root, textvariable = a, justify = RIGHT).pack()

def secod(*events):
    ray = a.get()
    raym = ray.replace(",",'')
    raymond = int(raym)
    try:
        asd = format(raymond,',')
    except:
        print("b")
    a.set(asd)

a.trace('w',secod)
root.mainloop()

附上问题的图片。 enter image description here

1 个答案:

答案 0 :(得分:1)

问题是修改Entrybox的textvariable不会自动更新其光标位置。相反,您可以执行以下操作:

首先,将条目框创建与其对齐分开(请参阅here):

b = Entry(root, textvariable = a, justify = RIGHT)
b.pack()

然后在您的观察者回调中,使用小部件自己的方法修改Entrybox的内容:

def secod(*events):
    ray = a.get()
    raym = ray.replace(",",'')
    raymond = int(raym)
    try:
        asd = format(raymond,',')
    except:
        print("b")
    # Overwrite the Entrybox content using the widget's own methods
    b.delete(0, END)
    b.insert(0, asd)