Python Tkinter:根据用户输入创建标识码
我是python和tkinter的新手,我一直坚持使用我的脚本,这一个:Python Tkinter:根据用户输入创建标识码,python,tkinter,Python,Tkinter,我是python和tkinter的新手,我一直坚持使用我的脚本,这一个: from openpyxl import * from tkinter import * wb = load_workbook('C:\\Users\\Me\\Desktop\\Script\\try.xlsx') sheet = wb.active def excel(): sheet.cell(row=1, column=1).value = "name" sheet.cell(row
from openpyxl import *
from tkinter import *
wb = load_workbook('C:\\Users\\Me\\Desktop\\Script\\try.xlsx')
sheet = wb.active
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"
def focus1(event):
birth_field.focus_set()
def focus2(event):
gender_field.focus_set()
def focus3(event):
mobile_field.focus_set()
def clear():
name_field.delete(0, END)
birth_field.delete(0, END)
gender_field.delete(0, END)
mobile_field.delete(0, END)
def insert():
if (fame_field.get() == "" and
birth_field.get() == "" and
gender_field.get() == "" and
mobile_field.get() == ""):
print("empty input")
else:
current_row = sheet.max_row
current_column = sheet.max_column
sheet.cell(row=current_row + 1, column=1).value = name_field.get()
sheet.cell(row=current_row + 1, column=2).value = birth_field.get()
sheet.cell(row=current_row + 1, column=3).value = gender_field.get()
sheet.cell(row=current_row + 1, column=4).value = mobile_field.get()
wb.save('C:\\Users\\Me\\Desktop\\Script\\try.xlsx')
name_field.focus_set()
clear()
if __name__ == "__main__":
root = Tk()
root.configure(background='light grey')
root.geometry("500x300")
excel()
#label
name = Label(root, text="name", bg="light grey")
birthdate = Label(root, text="birthdate", bg="light grey")
gender = Label(root, text="gender", bg="light grey")
mobile = Label(root, text="mobile contact", bg="light grey")
#grid
name.grid(row=1, column=0, sticky=W)
birthdate.grid(row=2, column=0, sticky=W)
gender.grid(row=3, column=0, sticky=W)
mobile.grid(row=4, column=0, sticky=W)
#entry
name_entry = Entry(root)
birthdate_entry = Entry(root)
gender_entry = StringVar()
mobile_entry = Entry(root)
name_entry.bind("<Return>", focus1)
birthdate_entry.bind("<Return>", focus2)
gender_entry.bind("<Return>", focus4)
mobile_entry.bind("<Return>", focus5)
name_entry.grid(row=1, column=1, ipadx="100")
birthdate_entry.grid(row=2, column=1, ipadx="100")
gender_entry.grid(row=3, column=1, ipadx="100")
mobile_entry.grid(row=4, column=1, ipadx="100")
excel()
submit = Button(root, text="Submit", fg="White",
bg="Red", command=insert)
submit.grid(row=12, column=1)
root.mainloop()
从openpyxl导入*
从tkinter进口*
wb=load\u工作簿('C:\\Users\\Me\\Desktop\\Script\\try.xlsx')
工作表=wb.active
def excel():
sheet.cell(行=1,列=1)。value=“名称”
sheet.cell(行=1,列=2)。value=“出生”
sheet.cell(行=1,列=3)。value=“性别”
sheet.cell(行=1,列=4)。value=“移动”
def焦点1(事件):
出生\字段。焦点\集合()
def焦点2(事件):
性别\字段。焦点\集合()
def焦点3(事件):
mobile_field.focus_set()
def clear():
名称\字段。删除(0,结束)
出生字段。删除(0,结束)
性别_字段。删除(0,结束)
移动字段。删除(0,结束)
def insert():
if(fame_field.get()==“”和
出生\u字段。get()==“”和
性别_字段。get()==“”和
mobile_字段。get()==“”):
打印(“空输入”)
其他:
当前行=sheet.max行
当前_列=sheet.max_列
sheet.cell(行=当前行+1,列=1)。值=名称\字段。get()
sheet.cell(行=当前行+1,列=2)。值=出生字段。get()
sheet.cell(row=current\u row+1,column=3)。value=gender\u field.get()
sheet.cell(行=当前行+1,列=4)。值=移动字段。get()
wb.save('C:\\Users\\Me\\Desktop\\Script\\try.xlsx')
名称\字段。焦点\集合()
清除()
如果名称=“\uuuuu main\uuuuuuuu”:
root=Tk()
root.configure(背景=“浅灰色”)
根几何(“500x300”)
excel()
#标签
名称=标签(根,text=“name”,bg=“浅灰色”)
生日=标签(根,text=“birthdate”,bg=“浅灰色”)
性别=标签(根,text=“性别”,bg=“浅灰色”)
mobile=标签(root,text=“mobile contact”,bg=“浅灰色”)
#网格
name.grid(行=1,列=0,粘性=W)
birthdate.grid(行=2,列=0,粘性=W)
网格(行=3,列=0,粘性=W)
mobile.grid(行=4,列=0,粘性=W)
#入口
名称\条目=条目(根)
出生日期\条目=条目(根)
性别_entry=StringVar()
mobile_entry=条目(根)
name_entry.bind(“,focus1)
birthdate_entry.bind(“,focus2)
gender_entry.bind(“,focus4)
mobile_entry.bind(“,focus5)
名称\u entry.grid(行=1,列=1,ipadx=“100”)
出生日期\u entry.grid(行=2,列=1,ipadx=“100”)
性别_entry.grid(行=3,列=1,ipadx=“100”)
mobile_entry.grid(行=4,列=1,ipadx=“100”)
excel()
提交=按钮(root,text=“提交”,fg=“白色”,
bg=“红色”,命令=插入)
submit.grid(行=12,列=1)
root.mainloop()
我需要的是从用户输入中创建一个代码,如下所示:姓名的前两个字母,加上出生年份、年龄(我需要从出生日期开始计算)和移动电话的最后两个数字,所有这些数字都用一个“u”分隔开(例如,na_2000_20_99)。我希望它显示在一个文本楔子中,用户可以看到但不能编辑,然后保存在我的excel文件中。可能吗?我的性别选项的第一个选择是使用Radiobutton,但由于某些原因,它会给我带来错误,所以我保留了文本表单。如果有人能帮我解决问题,我将非常感激。
谢谢大家,祝你们今天愉快 您的程序在执行时出错。 请尝试以下代码。 出生日期的格式应为YYYY-MM-DD
from openpyxl import *
from tkinter import *
from datetime import datetime
from dateutil.relativedelta import relativedelta
wb = load_workbook('C:\\Users\\Me\\Desktop\\Script\\try.xlsx')
sheet = wb.active
datetimeFormat = '%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()
从openpyxl导入*
从tkinter进口*
从日期时间导入日期时间
从dateutil.relativedelta导入relativedelta
wb=load\u工作簿('C:\\Users\\Me\\Desktop\\Script\\try.xlsx')
工作表=wb.active
datetimeFormat='%Y-%m-%d'
类主机(框架):
#大型机包含小部件
##全球投资
定义初始值(self、master、*args、**kwargs):
全球信息,投资部
excel()
库存量=1
#*参数将位置参数打包为元组参数
#**kwargs将关键字参数打包到dict kwargs中
#初始化基类
帧。初始帧(自、主、*args、**kwargs)
#在这种情况下,*an**运算符将解包参数
name=Label(self,text=“name:”,font=('times',15),anchor='e')。place(relx=0.05,rely=0.05,height=15,width=100)
出生日期=标签(self,text=“出生日期:”,font=('times',15),anchor='e')。地点(relx=0.05,rely=0.15,高度=15,宽度=100)
性别=标签(self,text=“gender:”,font=('times',15),anchor='e')。放置(relx=0.05,relen=0.25,高度=15,宽度=100)
mobile=Label(self,text=“mobile:”,font=('times',15),anchor='e')。place(relx=0.05,rely=0.35,高度=15,宽度=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,relen=0.05,高度=25,宽度=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,relen=0.15,高度=25,宽度=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,relen=0.25,高度=25,宽度=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,rele=0.35,高度=25,宽度=100)
#继续按钮
self.Submit=按钮(self,text='Submit',fg=“白色”,
bg=“红色”,命令=self.insert)
self.Submit.place(relx=0.05,relen=0.50,高度=25,宽度=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,relen=0.70,高度=15,宽度=200)
self.name.bind(“,self.focus1)
self.birthdate.bind(“,self.focus2)
self.gender.bind(“,self.focus3)
def焦点1(自身、事件):