在Tkinter输入框中是否可以用点替换逗号?
例如,如果用户键入逗号(,),它将在屏幕上显示一个点。
答案 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