Tkinter: create an identification code from user input
You Program had errors wile executing.Try the following Code.Birth date should be in the format of YYYY-MM-DD.
from openpyxl import *from tkinter import *from datetime import datetimefrom dateutil.relativedelta import relativedeltawb = load_workbook('C:\\Users\\Me\\Desktop\\Script\\try.xlsx') sheet = wb.activedatetimeFormat = '%Y-%m-%d'class Mainframe(Frame): # Mainframe contains the widgets## global inv_cnt def __init__(self,master,*args,**kwargs): global msg, inv_cnt excel() inv_cnt=1 # *args packs positional arguments into tuple args # **kwargs packs keyword arguments into dict kwargs # initialise base class Frame.__init__(self,master,*args,**kwargs) # in this case the * an ** operators unpack the parameters name = Label(self, text="Name:", font=('times', 15),anchor='e').place(relx=0.05, rely=0.05, height=15, width=100) birthdate = Label(self, text="Birth Date:", font=('times', 15),anchor='e').place(relx=0.05, rely=0.15, height=15, width=100) gender = Label(self, text="Gender:", font=('times', 15),anchor='e').place(relx=0.05, rely=0.25, height=15, width=100) mobile = Label(self, text="Mobile:", font=('times', 15),anchor='e').place(relx=0.05, rely=0.35, height=15, width=100) self.name = StringVar(self) self.name.set('') self.name=Entry(self,textvariable = self.name, width=280, bg='WHITE') self.name.place(relx=0.2, rely=0.05, height=25, width=100) self.birthdate = StringVar(self) self.birthdate.set('') self.birthdate=Entry(self,textvariable = self.birthdate, width=280, bg='WHITE') self.birthdate.place(relx=0.2, rely=0.15, height=25, width=100) self.gender = StringVar(self) self.gender.set('') self.gender=Entry(self,textvariable = self.gender, width=280, bg='WHITE') self.gender.place(relx=0.2, rely=0.25, height=25, width=100) self.mobile = StringVar(self) self.mobile.set('') self.mobile=Entry(self,textvariable = self.mobile, width=280, bg='WHITE') self.mobile.place(relx=0.2, rely=0.35, height=25, width=100) # Proceed button self.Submit = Button(self, text='Submit', fg="White", bg="Red", command=self.insert) self.Submit.place(relx=0.05,rely=0.50,height=25,width=100) self.Output = StringVar(self) self.Output.set('') self.Output1 = Label(self, textvariable=self.Output, font=('times', 10),anchor='e', bg='WHITE').place(relx=0.05, rely=0.70, height=15, width=200) self.name.bind("<Return>", self.focus1) self.birthdate.bind("<Return>", self.focus2) self.gender.bind("<Return>", self.focus3) def focus1(self, event): self.birthdate.focus_set() def focus2(self, event): self.gender.focus_set() def focus3(self, event): self.mobile.focus_set() def get_inv_count(self,value): global inv_cnt inv_cnt = value def clear(self): self.name.delete(0, END) self.birthdate.delete(0, END) self.gender.delete(0, END) self.mobile.delete(0, END) def insert(self): print(self.name.get(), self.birthdate.get(), self.gender.get(), self.mobile.get()) if (self.name.get() == "" and self.birthdate.get() == "" and self.gender.get() == "" and self.mobile.get() == ""): print("empty input") else: current_row = sheet.max_row current_column = sheet.max_column sheet.cell(row=current_row + 1, column=1).value = self.name.get() sheet.cell(row=current_row + 1, column=2).value = self.birthdate.get() sheet.cell(row=current_row + 1, column=3).value = self.gender.get() sheet.cell(row=current_row + 1, column=4).value = self.mobile.get() difference_in_years = relativedelta(datetime.strptime(datetime.now().strftime(datetimeFormat), datetimeFormat), datetime.strptime(self.birthdate.get(), datetimeFormat)).years self.Output.set("{0}_{1}_{2}_{3}".format(self.name.get()[:2], self.birthdate.get()[:4], difference_in_years, self.mobile.get()[-2:])) wb.save('try.xlsx') self.name.focus_set() self.clear() def excel(): sheet.cell(row=1, column=1).value = "name" sheet.cell(row=1, column=2).value = "birth" sheet.cell(row=1, column=3).value = "gender" sheet.cell(row=1, column=4).value = "mobile"class App(Tk): def __init__(self): global value Tk.__init__(self) self.title("MY GUI") self.geometry('800x250') self.resizable(0,0) # create and pack a Mainframe window Mainframe(self).place(x=0,y=0,height=250,width=800) self.mainloop() App()