0

嗨,我正在构建一个 GUI,应该可以在其中插入存储在 sqllite3 数据库中的您的姓名和生日。我使用 Tkcalendar 模块让人们选择它的生日。我的问题是我不知道如何读出日期。我希望有人能帮助我!

    import sqlite3
verbindung = sqlite3.connect("Datenbanken/geb3.db")
zeiger = verbindung.cursor()
zeiger.execute("""CREATE TABLE IF NOT EXISTS people3(vorname VARCHAR(20), nachname VARCHAR(30), geburtstag DATE );""")

from tkinter import *
from tkcalendar import Calendar, DateEntry

root = Tk()



def speichern():
    zeiger.execute("""INSERT INTO people3 VALUES (?,?,?) """, (eingabefeldvorname.get(), eingabefeldnachname.get(), eingabefelddatum.get()))
    



Label(root, text = "vorname").pack()
eingabefeldvorname=StringVar()
eingabefeld = Entry(root, textvariable = eingabefeldvorname, bg ="red").pack()

Label(root, text = "nachname").pack()
eingabefeldnachname = StringVar()
eingabefeld = Entry(root, textvariable = eingabefeldnachname, bg ="green").pack()

Label(root, text = "Geburtsdatum")


eingabefelddatum= DateEntry(root, width = 20, textvariable = eingabefelddatum, bg ="yellow").pack()

konpf2 = Button(root, text = "speichern", command = speichern).pack()
root.mainloop()



zeiger.execute("SELECT * FROM people3")
inhalt = zeiger.fetchall()
print(inhalt)


def listeleeren():
     zeiger.execute("DELETE FROM people3") 

listeleeren()


verbindung.commit()
verbindung.close()```
4

1 回答 1

0

要获取 DataEntry 的值,该函数get_date()起作用。

参考:https ://pypi.org/project/tkcalendar/#dateentry-widget

您也可以使用<<DateEntrySelected>>每次用户用鼠标选择日期时生成的事件。

import tkinter as tk
from tkinter import ttk
from tkcalendar import Calendar, DateEntry

def dateentry_view():
    def print_sel(e):
        print(cal.get_date())

    top = tk.Toplevel(root)

    ttk.Label(top, text='Choose date').pack(padx=10, pady=10)
    cal = DateEntry(top, width=12, background='darkblue',
                foreground='white', borderwidth=2)
    cal.pack(padx=10, pady=10)
    cal.bind("<<DateEntrySelected>>", print_sel)

root = tk.Tk()
ttk.Button(root, text='DateEntry', command=dateentry_view).pack(padx=10, pady=10)
root.mainloop()
于 2020-07-21T06:14:31.000 回答