我正在使用一个简单的表单来检索一些信息,然后我想插入SQLite数据库,但返回的值似乎不是单个字符串。
窗体在函数中创建
def formFunction():
entry_name = tkinter.Entry(myWindow)
entry_name.grid(row=1, column=1, sticky='w')
submit_button = tkinter.Button(newShootContainer, text='New Shoot', command= lambda: insertNewEvent(entry_name))
submit_button.grid(row=2, columnspan=2, sticky='e')
那么插入功能是...
def insertNewEvent(new_name):
print(new_name.get())
db = sqlite3.connect('data/ct.db')
cursor = db.cursor()
cursor.execute('''INSERT INTO t_event(e_name) values (?);''',(new_name.get()))
如果我在输入框中使用单个字符,这有效,但是如果我使用一个单词,例如"TEST",我会收到以下错误......
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 4 supplied.
但我试图插入一个单词,而不是 4 个单独的字母。知道为什么会这样吗?
正如 stovfl 在上面正确回答的那样,我喜欢为表单创建一个新窗口,即:
def formFunction(event):
root.withdraw() # hides your main window
top = Toplevel() # New window Opens
top.title('New Shoot')
top.attributes('-zoomed', True) # Form will default into full screen
name = Label(text='Enter name: ')
name.grid(row=1, column=1, sticky='w')
entry_name = Entry(top)
entry_name.grid(row=2, column=1, sticky='w')
submit_button = Button(top, text='New Shoot')
submit_button.bind('<Button-1>', insertNewName) # Button -1 is left click
submit_button.grid(row=2, columnspan=2, sticky='e')
exit_button = Button(top, text='Exit/Close', command=top.destroy)
exit_button.grid(row=3, column=1)
root.iconfiy() # brings your main window back