python - Python Tkinter-每次单击时清除文本框并使用数字组分隔符显示
问题描述
我正在编写一个简单的应用程序来根据用户输入的值计算一些值。我几乎做到了!现在我想知道: 1.每次点击
我的文本框如何清除?
2、如何实现以千位分隔符(数字组分隔符)显示文本框的内容?即显示为.txtFixedIncome
txtFixedIncome
27659
27,659
import tkinter
mainForm = tkinter.Tk()
mainForm.title('Shahr Fixed Income Fund')
def btnCalculatePressed():
txtCalculationResult.delete('1.0', 'end')
#txtCalculationResult.insert(tkinter.INSERT, "Button was pressed")
#txtCalculationResult.pack()
yourIncomePortion = txtFixedIncome.get('1.0', 'end')
print(yourIncomePortion)
txtCalculationResult.insert(tkinter.INSERT, yourIncomePortion)
btnCalculate = tkinter.Button(mainForm , text = "Calculate", command= btnCalculatePressed)
txtCalculationResult = tkinter.Text(mainForm )
txtCalculationResult.insert(tkinter.INSERT, "CalculationResults")
txtFixedIncome = tkinter.Text(mainForm, height = 1, width = 30 )
txtFixedIncome.insert(tkinter.INSERT, "your income portion")
txtFixedIncome.pack();
txtCalculationResult.pack()
btnCalculate.pack()
mainForm.mainloop()
解决方案
第一个问题的解答:
bind
关注和关注您的小部件。像:
txtFixedIncome.bind("<FocusIn>",lambda _:txtFixedIncome.delete('1.0', 'end'))
txtFixedIncome.bind("<FocusOut>",lambda _:txtFixedIncome.insert("1.0","your income portion" if str(txtFixedIncome.get("1.0","end")) == "\n" else ""))
这将在聚焦时擦除输入中的所有数据,并在聚焦时输入信息数据。
第二个问题的解答:
您可以创建一个函数来更新您的值并对其进行格式化,例如:
def updat(text):
try:txtCalculationResult.insert(tkinter.INSERT,"{:,.0f}".format(float(text)))
except:txtCalculationResult.insert(tkinter.INSERT,"CalculationResults")
作为:
>>> "{:,.0f}".format(23442)
'23,442'
>>>
完整代码:
这是一个完整的示例代码,显示了您所期望的行为:
import tkinter
mainForm = tkinter.Tk()
mainForm.title('Shahr Fixed Income Fund')
def updat(text):
try:txtCalculationResult.insert(tkinter.INSERT,"{:,.0f}".format(float(text)))
except:txtCalculationResult.insert(tkinter.INSERT,"CalculationResults")
def btnCalculatePressed():
txtCalculationResult.delete('1.0', 'end')
yourIncomePortion = txtFixedIncome.get('1.0', 'end')
updat(yourIncomePortion)
btnCalculate = tkinter.Button(mainForm , text = "Calculate", command= btnCalculatePressed)
txtCalculationResult = tkinter.Text(mainForm)
txtCalculationResult.insert(tkinter.INSERT, "CalculationResults")
txtFixedIncome = tkinter.Text(mainForm, height = 1, width = 30 )
txtFixedIncome.insert(tkinter.INSERT, "your income portion")
txtFixedIncome.bind("<FocusIn>",lambda _:txtFixedIncome.delete('1.0', 'end'))
txtFixedIncome.bind("<FocusOut>",lambda _:txtFixedIncome.insert("1.0","your income portion" if str(txtFixedIncome.get("1.0","end")) == "\n" else ""))
txtFixedIncome.pack();
txtCalculationResult.pack()
btnCalculate.pack()
mainForm.mainloop()
打字时的格式:
如果您想在键入时按照评论格式化字符串,请使用以下代码:
import tkinter
mainForm = tkinter.Tk()
mainForm.title('Shahr Fixed Income Fund')
def updat(text):
try:txtCalculationResult.insert(tkinter.INSERT,"{:,.0f}".format(float(text.replace(",",""))))
except:txtCalculationResult.insert(tkinter.INSERT,"CalculationResults")
def btnCalculatePressed():
txtCalculationResult.delete('1.0', 'end')
yourIncomePortion = txtFixedIncome.get('1.0', 'end')
updat(yourIncomePortion)
btnCalculate = tkinter.Button(mainForm , text = "Calculate", command= btnCalculatePressed)
txtCalculationResult = tkinter.Text(mainForm)
txtCalculationResult.insert(tkinter.INSERT, "CalculationResults")
txtFixedIncome = tkinter.Text(mainForm, height = 1, width = 30 )
txtFixedIncome.insert(tkinter.INSERT, "your income portion")
def updat2():
text = txtFixedIncome.get("1.0","end")
txtFixedIncome.delete("1.0","end")
try:
txtFixedIncome.insert(tkinter.INSERT,"{:,.0f}".format(float(text.replace(",",""))))
except:
txtFixedIncome.insert(tkinter.INSERT,text[:-1])
txtFixedIncome.bind("<FocusIn>",lambda _:txtFixedIncome.delete('1.0', 'end'))
txtFixedIncome.bind("<FocusOut>",lambda _:txtFixedIncome.insert("1.0","your income portion" if str(txtFixedIncome.get("1.0","end")) == "\n" else ""))
txtFixedIncome.bind("<Key>",lambda _:mainForm.after(50,updat2))
txtFixedIncome.pack();
txtCalculationResult.pack()
btnCalculate.pack()
mainForm.mainloop()
推荐阅读
- google-cloud-platform - Google Cloud 平台上 Cloud Shell 主目录的全球位置?
- java - 使用正则表达式查找字符串中的最后一个字母
- c++ - Xcode 12 - 构建 .m 文件时出错,因为“无法构建模块‘std’”
- java - 如何检查整数字符串
- sql - postgresql:按列/windows函数/min-max和复杂查询分组
- node.js - 如何获取当前登录的用户角色 jwt nodejs
- javascript - 需要帮助来显示来自外部 API 的数据
- spring - 编译期间在 Jenkins 中未调用 compileTestGroovy
- python - AttributeError:“博客”对象没有属性“项目”-FastAPI
- python - python 2:使用混合换行符打开和解析文本文件