变量未在 tkinter 和 sqlite 中正确发送和执行

问题描述 投票:0回答:1

我使用 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()
python sqlite tkinter
1个回答
0
投票

由于

Entered = entryrep.get()
在创建输入框后立即执行,因此
Entered
始终为空字符串。

您需要在 lambda 内部调用

entryrep.get()

buttonfish = ttk.Button(repwin, text="Report", width=20,
                        command=lambda: displaytable(entryrep.get()))
© www.soinside.com 2019 - 2024. All rights reserved.