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

如何让python自动将冒号放入时间格式(HH:MM:SS)

如何让python自动将冒号放入时间格式(HH:MM:SS)

拉风的咖菲猫 2023-06-27 17:31:31
from tkinter import *root=Tk()root.geometry("300x300")def t_input():    print(e1.get())l1=Label(root,text="Enter here your time:")l1.place(x=20,y=50)e1=Entry(root,bd=2,width=25)e1.place(x=90,y=50)b1=Button(root,text="Enter",command=t_input)b1.place(x=240,y=50)root.mainloop()这是我的代码,用户必须在小时、分钟、秒后输入冒号请帮我把它设为默认
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

在我的示例中,我们扩展了Entry小部件来处理您的时间格式。确保validatecommand我们输入的是数字,并且文本与regular expression. 该键bind处理冒号的插入。

import tkinter as tk, re


class TimeEntry(tk.Entry):

    def __init__(self, master, **kwargs):

        tk.Entry.__init__(self, master, **kwargs)

        vcmd = self.register(self.validate)


        self.bind('<Key>', self.format)

        self.configure(validate="all", validatecommand=(vcmd, '%P'))


        self.valid = re.compile('^\d{0,2}(:\d{0,2}(:\d{0,2})?)?$', re.I)


    def validate(self, text):

        if ''.join(text.split(':')).isnumeric():

            return not self.valid.match(text) is None

        return False


    def format(self, event):

        if event.keysym != 'BackSpace':

            i = self.index('insert')

            if i in [2, 5]:

                if self.get()[i:i+1] != ':':

                    self.insert(i, ':')



class Main(tk.Tk):

    def __init__(self):

        tk.Tk.__init__(self)


        TimeEntry(self, width=8).grid(row=0, column=0)



if __name__ == "__main__":

    root = Main()

    root.geometry('800x600')

    root.title("Time Entry Example")

    root.mainloop()


查看完整回答
反对 回复 2023-06-27
  • 1 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信