我使用 tkinter 和 sqlite3 为水族馆创建库存管理系统,作为大学项目。当我创建报告功能时,我遇到了一个奇怪的错误,我尝试修复很多。
我正在尝试使用用户输入作为 SQL 查询,以便用户可以将他们正在查找的任何数据提取到 tkinter 表中。我遇到的错误是我的代码不会将输入的查询发送到表子例程,因此表窗口打开为空白并且没有收到我给出的命令。
我已经验证这就是原因,因为我尝试打印出表子例程中的命令(输入),但它是空白的。
我会给出错误消息,但没有
这是我的代码片段:
def displaytable(Entered):
repwin1 = Tk()
repwin1.geometry("400x400")
print(Entered)
r_set=con.execute(Entered);
i=0
for Fishy in r_set:
for j in range(len(Fishy)):
e = Entry(repwin1, width=5, fg='blue')
e.grid(row=i, column=j)
e.insert(END, Fishy[j])
i=i+1
print("c")
def ReportGUI():
repwin = Tk()
repwin.geometry("400x400")
label12 = Label(repwin, text="assisted query builder")
label12.pack()
entryrep = Entry(repwin,width=50)
entryrep.focus_set()
entryrep.pack()
Entered = entryrep.get()
buttonfish = ttk.Button(repwin, text= "Report",width= 20, command= lambda : displaytable(Entered))
buttonfish.pack()
由于
Entered = entryrep.get()
在创建输入框后立即执行,因此 Entered
始终为空字符串。
您需要在 lambda 内部调用
entryrep.get()
:
buttonfish = ttk.Button(repwin, text="Report", width=20,
command=lambda: displaytable(entryrep.get()))