#python #sql #tkinter
#python #sql #tkinter
Вопрос:
Я пытаюсь создать простую программу, которая позволяет пользователю вводить имя, отчество и фамилию в графическом интерфейсе tkinter. Когда пользователь нажимает кнопку «Сохранить», программа записывает записи из графического интерфейса пользователя в базу данных.
У меня возникли некоторые проблемы с использованием «Get» с tkinter. Мой код вставляет пустые строки в мою базу данных
import tkinter as tk
import sqlite3 as sl
con = sl.connect('nibbles.db')
def save_employee():
sql = 'INSERT INTO EMPLOYEE (FIRST_NAME, MIDDLE_INITIAL, LAST_NAME) values(?, ?, ?)'
data = [
(firsNameEnt.get(), middleInitEnt.get(), lastNameEnt.get())
]
with con:
con.executemany(sql, data)
#Create Window for Employee Entry
window = tk.Tk()
window.title("Add New Employee")
window.columnconfigure([0,1,2,3,4,5],weight=1)
window.rowconfigure([0,1,2,3,4,5],weight=1)
firstNameLbl = tk.Label(text="First Name")
firstNameLbl.grid(row = 0, column = 0, padx=5, pady=5)
firsNameEnt = tk.Entry()
firsNameEnt.grid(row = 0, column = 1, padx=5, pady=5)
middleInitLbl = tk.Label(text = "Middle Initial")
middleInitLbl.grid(row = 0, column = 2, padx=5, pady=5)
middleInitEnt = tk.Entry()
middleInitEnt.grid(row = 0, column = 3, padx=5, pady=5)
lastNameLbl = tk.Label(text = "Last Name")
lastNameLbl.grid(row = 0, column = 4, padx=5, pady=5)
lastNameEnt = tk.Entry()
lastNameEnt.grid(row = 0, column = 5, padx=5, pady=5)
saveBtn = tk.Button(text="Save", command=save_employee())
saveBtn.grid(row = 1, column = 5, padx=5, pady=5,sticky = "se")
window.mainloop()
Комментарии:
1. Обновление, я выяснил, что моя функция save_employee выполняется независимо от нажатия кнопки сохранения, что объясняет, почему мои переменные пусты… но я все еще пытаюсь понять, почему это происходит
Ответ №1:
#Change command=save_employee() by command=save_employee.
#If one day you need to pass parameters
#command=lambda : save_employee(arg)
import tkinter as tk
import sqlite3 as sl
con = sl.connect('nibbles.db')
def save_employee():
print(firsNameEnt.get(), middleInitEnt.get(), lastNameEnt.get())#)
#Create Window for Employee Entry
window = tk.Tk()
window.title("Add New Employee")
window.columnconfigure([0,1,2,3,4,5],weight=1)
window.rowconfigure([0,1,2,3,4,5],weight=1)
firstNameLbl = tk.Label(text="First Name")
firstNameLbl.grid(row = 0, column = 0, padx=5, pady=5)
firsNameEnt = tk.Entry()
firsNameEnt.grid(row = 0, column = 1, padx=5, pady=5)
middleInitLbl = tk.Label(text = "Middle Initial")
middleInitLbl.grid(row = 0, column = 2, padx=5, pady=5)
middleInitEnt = tk.Entry()
middleInitEnt.grid(row = 0, column = 3, padx=5, pady=5)
lastNameLbl = tk.Label(text = "Last Name")
lastNameLbl.grid(row = 0, column = 4, padx=5, pady=5)
lastNameEnt = tk.Entry()
lastNameEnt.grid(row = 0, column = 5, padx=5, pady=5)
saveBtn = tk.Button(text="Save", command=save_employee)
saveBtn.grid(row = 1, column = 5, padx=5, pady=5,sticky = "se")
window.mainloop()''
Комментарии:
1. Я рекомендую вам не использовать Tkinter xd