【发布时间】:2013-06-20 13:03:46
【问题描述】:
根据用户类型将文本格式化为时间格式
当用户输入数字时,我正在尝试在 Tk.Entry 文本框中将文本格式化为标准时间格式 00:00:00。
我知道 Tkinter 不是在用户键入时格式化文本的最简单、也不是最优化的框架,但我已经做到了这一点:
from Tkinter import *
class Application(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.createWidgets()
def createWidgets(self):
sv = StringVar()
sv.trace("w", lambda name, index, mode, sv=sv: self.entryUpdateEndHour(sv))
endHourEntry = Entry(self, textvariable=sv)
endHourEntry.pack()
def entryUpdateEndHour(self, sv):
global x
x = sv.get()[0:2] + ':'
y = x + sv.get()[3:5] + ':'
z = y + sv.get()[6:8]
sv.set(z)
root = Tk()
app = Application(master=root)
app.mainloop()
这会打印出我想要的 (12:45:67),但实时格式很糟糕。例如,在输入两个数字时,我在文本框中得到12:::,它会跳过我输入的每第三个数字,因为它会用: 替换它。
如果有人对此答案有任何解决方法或解决方案,我将不胜感激。提前致谢。
【问题讨论】:
-
您的代码块中有一些未定义的变量:
self、entryUpdateEndHour、svEndHour。您能否提供一个short, self-contained, runnable example,我们可以复制/粘贴/运行? -
@Kevin 我已经让我的代码可以运行,所以我的问题现在应该更容易回答了。
标签: python textbox tkinter string-formatting live-update