Entry正在返回我无法从get()方法解释的值

2024-05-19 00:40:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用一个简单的表单来检索一些信息,然后我想插入到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个字母。知道为什么会这样吗


Tags: 函数name表单newdbtkinterdefbutton
1条回答
网友
1楼 · 发布于 2024-05-19 00:40:18

正如stovfl在上面正确回答的那样,我喜欢为表单ie创建一个新窗口:

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

相关问题 更多 >

    热门问题