为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

江户川乱折腾 2022-09-13 19:29:51
我正在开发一个用于计算收入税的应用程序,代码本身正常工作,但我想知道是否有办法在输入字段中键入时通过“,”更改“.”。示例: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()
查看完整描述

2 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

您可以绑定到 “.” 字符,并让它插入一个“,”。用于防止出现默认行为。return "break"


def replace_period(event):

    event.widget.insert("insert", ",")

    return "break"


e_receita1.bind("<.>", replace_period)  # or "<period>"


查看完整回答
反对 回复 2022-09-13
?
达令说

TA贡献1821条经验 获得超6个赞

在回调函数中使用 和 将 “.” 替换为“,”:bind


from tkinter import *

# ---

root = Tk()

root.geometry('350x350')

# ---

def callback(e):

    """Function to change "." to "," while typing in an entry"""

    val = e.widget.get()


    # If statement avoids unnecessary delete/insert calls

    if "." in val:

        e.widget.delete(0, "end")

        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 release

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.bind('<KeyRelease>', callback) # Bind the key release

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().replace(",", ".")) * 8 / 100, 2))

    v_result2.set(round(float(e_receita2.get().replace(",", ".")) * 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()


查看完整回答
反对 回复 2022-09-13
  • 2 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号