Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter:根据用户输入创建标识码_Python_Tkinter - Fatal编程技术网

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

我是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=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(自身、事件):