Search code examples
pythonsql-servertkintercalendartkcalendar

How to enter data to SQL from tkcalendar


I have a program that creates a form so you can use it to add entries into a SQL Server database.

One of the things I wanted to add was a calendar widget so the user can choose the time by clicking on that date in the tkcalendar widget rather than writing it. I created the widget, but I have no idea how to get the date from the widget and then enter it into SQL Server.

Can someone please help?

This is what it looks like currently.

def vorm():
    #Aken
    top= Toplevel(ws)
    top.geometry("720x200")
    top['bg'] = '#26658f'

    options= [
        "P",
        "V"
    ]

    clicked = StringVar()
    clicked.set("P")

    def grad_date1():
        kuupäev = Toplevel(top)
        kuupäev.geometry("270x250")
        kuupäev['bg'] = '#26658f'
        cal = Calendar(kuupäev, selectmode = 'day',
        year = 2022, month = 2,
        day = 25)
        cal.grid(row=0,column=0,padx=(10, 10), columnspan = 2)

        def grad_date():

 
            date.config(text = "Selected Date is: " + cal.get_date())
 
        # Add Button and Label
        Button(kuupäev, text = "Get Date",
       command = grad_date).grid(row=1,column=1,pady = 20)
 
        date = Label(kuupäev, text = "")
        date.grid(row=1,column=0,padx=(10, 10))



    #Tekst
    Kuupäev = Label(top,text="Kuupäev", background="#26658f")
    Kuupäev.grid(row=0,column=0,padx=(10, 10))
    Tellimus= Label(top,text="Tellimus", background="#26658f")
    Tellimus.grid(row=0,column=1,padx=(10, 10))
    Pos = Label(top,text="Pos", background="#26658f")
    Pos.grid(row=0,column=2,padx=(10, 10))
    Klient = Label(top,text="Klient", background="#26658f")
    Klient.grid(row=0,column=3,padx=(10, 10))
    Toode = Label(top,text="Toode", background="#26658f")
    Toode.grid(row=0,column=4,padx=(10, 10))
    Operatsioon = Label(top,text="Operatsioon", background="#26658f")
    Operatsioon.grid(row=2,column=0,padx=(10, 10))
    Kogus = Label(top,text="Kogus", background="#26658f")
    Kogus.grid(row=2,column=1,padx=(10, 10))
    Käsi = Label(top,text="Käsi", background="#26658f")
    Käsi.grid(row=2,column=2,padx=(10, 10))
    Operaator = Label(top,text="Operaator", background="#26658f")
    Operaator.grid(row=2,column=3,padx=(10, 10))
    Pink = Label(top,text="Pink", background="#26658f")
    Pink.grid(row=2,column=4,padx=(10, 10))
    #Kirjakastid
    Kuupäev_entry= Button(top, text="Date Selection", command = grad_date1)
    Kuupäev_entry.grid(row=1,column=0,padx=(10, 10))
    Tellimus_entry = Entry(top)
    Tellimus_entry.grid(row=1,column=1,padx=(10, 10))
    Pos_entry = Entry(top)
    Pos_entry.grid(row=1,column=2,padx=(10, 10))
    Klient_entry = Entry(top)
    Klient_entry.grid(row=1,column=3,padx=(10, 10))
    Toode_entry = Entry(top)
    Toode_entry.grid(row=1,column=4,padx=(10, 10))
    Operatsioon_entry = Entry(top)
    Operatsioon_entry.grid(row=3,column=0,padx=(10, 10))
    Kogus_entry = Entry(top)
    Kogus_entry.grid(row=3,column=1,padx=(10, 10))
    Käsi_entry = OptionMenu(top, clicked, *options)
    Käsi_entry.grid(row=3,column=2,padx=(10, 10))
    Operaator_entry = Entry(top)
    Operaator_entry.grid(row=3,column=3,padx=(10, 10))
    Pink_entry = Entry(top)
    Pink_entry.grid(row=3,column=4,padx=(10, 10))

    #"Tühjenda"
    def delete():
        Kuupäev_entry.delete(0, 'end')
        Tellimus_entry.delete(0, 'end')
        Pos_entry.delete(0, 'end')
        Klient_entry.delete(0, 'end')
        Toode_entry.delete(0, 'end')
        Operatsioon_entry.delete(0, 'end')
        Kogus_entry.delete(0, 'end')
        Operaator_entry.delete(0, 'end')
        Pink_entry.delete(0, 'end') 

    #"Salvesta" 
    def submit_it():
        con1 = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=192.168.#.#;DATABASE=###;UID=#####;PWD=######')
    
        cur2 = "insert into PROD_MachiningEventsTEST ([Date], [Order], [Position], [Client], [Product], [Operation], [Amount], [OpeningSide], [Operator], [Machine]) values(?,?,?,?,?,?,?,?,?,?)"
        val = (Kuupäev_entry.get(), Tellimus_entry.get(), Pos_entry.get(), Klient_entry.get(), Toode_entry.get(), Operatsioon_entry.get(), Kogus_entry.get(), clicked.get(), Operaator_entry.get(), Pink_entry.get())
        cur1 = con1.cursor()
        cur1.execute(cur2,val)

        con1.commit()     
        con1.close()
        close_win(top)
    
    
    #Nupud
    button= Button(top, text="Salvesta", command= submit_it)
    button.grid(row=5,column=1,pady=(10, 10))
    button= Button(top, text="Tühjenda", command= delete)
    button.grid(row=5,column=3,pady=(10, 10))

    #Vormil olevate nupude,kastide ja teksti paigutus.
    top.rowconfigure(0, weight=3)
    top.rowconfigure(1, weight=3)
    top.rowconfigure(2, weight=3)
    top.rowconfigure(3, weight=3)
    top.rowconfigure(4, weight=3)
    top.rowconfigure(5, weight=3)

    top.columnconfigure(0, weight=3)
    top.columnconfigure(1, weight=3)
    top.columnconfigure(2, weight=3)
    top.columnconfigure(3, weight=3)
    top.columnconfigure(4, weight=3)

Solution

  • The answer was to replace Kuupäev_entry.get() with cal.get_date()