蟒蛇/特金特 - 将 “.” 更改为“,”

我正在开发一个用于计算收入税的应用程序,代码本身正常工作,但我想知道是否有办法在输入字段中键入时通过“,”更改“.”。


示例:100,50 而不是 100.50


请按照以下代码操作:


from tkinter import *

# ---

root = Tk()

root.geometry('350x350')

# ---

l_receita1 = Label(root, text='Receita 1')

l_receita1.place(x=10, y=10)

e_receita1 = Entry(root)

e_receita1.place(x=100, y=10)

l_receita2 = Label(root, text='Receita 2')

l_receita2.place(x=10, y=40)

e_receita2 = Entry(root)

e_receita2.place(x=100, y=40)

# ---

v_result1 = DoubleVar()

l_resRec1 = Label(root, textvariable=v_result1)

l_resRec1.place(x=10, y=100)

v_result2 = DoubleVar()

l_resRec2 = Label(root, textvariable=v_result2)

l_resRec2.place(x=10, y=140)

v_result3 = DoubleVar()

l_resRec3 = Label(root, textvariable=v_result3)

l_resRec3.place(x=10, y=220)

# ---

def calc():

    v_result1.set(round(float(e_receita1.get()) * 8 / 100, 2))

    v_result2.set(round(float(e_receita2.get()) * 12 / 100, 2))

    v_result3.set(round(float(v_result1.get() + v_result2.get()), 2))


    e_receita1.delete(0, END)

    e_receita2.delete(0, END)

# ---

bt = Button(root, text='Calcular', command=calc)

bt.place(x=10, y=180)

# ---

root.mainloop()


江户川乱折腾
浏览 125回答 2
2回答

FFIVE

您可以绑定到 “.” 字符,并让它插入一个“,”。用于防止出现默认行为。return "break"def replace_period(event):&nbsp; &nbsp; event.widget.insert("insert", ",")&nbsp; &nbsp; return "break"e_receita1.bind("<.>", replace_period)&nbsp; # or "<period>"

达令说

在回调函数中使用 和 将 “.” 替换为“,”:bindfrom tkinter import *# ---root = Tk()root.geometry('350x350')# ---def callback(e):&nbsp; &nbsp; """Function to change "." to "," while typing in an entry"""&nbsp; &nbsp; val = e.widget.get()&nbsp; &nbsp; # If statement avoids unnecessary delete/insert calls&nbsp; &nbsp; if "." in val:&nbsp; &nbsp; &nbsp; &nbsp; e.widget.delete(0, "end")&nbsp; &nbsp; &nbsp; &nbsp; e.widget.insert(0, val.replace(".", ","))l_receita1 = Label(root, text='Receita 1')l_receita1.place(x=10, y=10)e_receita1 = Entry(root)e_receita1.bind('<KeyRelease>', callback) # Bind the key releasee_receita1.place(x=100, y=10)l_receita2 = Label(root, text='Receita 2')l_receita2.place(x=10, y=40)e_receita2 = Entry(root)e_receita2.bind('<KeyRelease>', callback) # Bind the key releasee_receita2.place(x=100, y=40)# ---v_result1 = DoubleVar()l_resRec1 = Label(root, textvariable=v_result1)l_resRec1.place(x=10, y=100)v_result2 = DoubleVar()l_resRec2 = Label(root, textvariable=v_result2)l_resRec2.place(x=10, y=140)v_result3 = DoubleVar()l_resRec3 = Label(root, textvariable=v_result3)l_resRec3.place(x=10, y=220)# ---def calc():&nbsp; &nbsp; v_result1.set(round(float(e_receita1.get().replace(",", ".")) * 8 / 100, 2))&nbsp; &nbsp; v_result2.set(round(float(e_receita2.get().replace(",", ".")) * 12 / 100, 2))&nbsp; &nbsp; v_result3.set(round(float(v_result1.get() + v_result2.get()), 2))&nbsp; &nbsp; e_receita1.delete(0, END)&nbsp; &nbsp; e_receita2.delete(0, END)# ---bt = Button(root, text='Calcular', command=calc)bt.place(x=10, y=180)# ---root.mainloop()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python