Tkinter输入框中是否可以用点替换逗号?

时间:2019-04-30 10:12:32

标签: python-3.x tkinter

在Tkinter输入框中是否可以用点替换逗号?
例如,如果用户键入逗号(,),它将在屏幕上显示一个点。

1 个答案:

答案 0 :(得分:3)

您可以将绑定函数用于带有<KeyRelease-comma>事件的Entry。 之后,它将在 之后运行此函数。然后,该函数可以从“条目”中获取文本,并替换为带有点而不是逗号的新文本。

Entry

如果您使用import tkinter as tk def callback(event): print('event.widget.get():', event.widget.get()) text = event.widget.get() # get all text text = text.replace(',', '.') # replace comma event.widget.delete(0, 'end') # remove all text from Entry event.widget.insert(0, text) # put new text in Entry root = tk.Tk() e = tk.Entry(root) e.pack() e.bind('<KeyRelease-comma>', callback) root.mainloop() ,那么将在之前执行函数。<Key-comma>将char放在tkinter中,这样您将获得没有逗号的文本,并且无法更改它


您可以在Entry中使用StringVar()并将功能分配给Entry(..., textvariable=...)。当StringVar更改(设置)trace('w', ...)中的文本时,tkinter将执行功能。

StringVar

编辑:使用import tkinter as tk def callback(id_, mode, other): #print(id_, mode, other) var.set( var.get().replace(',', '.') ) root = tk.Tk() var = tk.StringVar() var.trace('w', callback) e = tk.Entry(root, textvariable=var) e.pack() root.mainloop() ,您可以执行功能,然后 <Key-comma>将逗号放在Entry中。函数可以放置点并使用tkitner来停止事件,并且不会将逗号放在return "break"

Entry