【问题标题】:tkinter for loop entry bind connected to sqlite3tkinter for 循环条目绑定连接到 sqlite3
【发布时间】:2021-06-04 12:37:21
【问题描述】:

我很难通过在 for 循环中创建的条目的绑定返回正确的 sqlite3 行

我知道,我不知道如何用文字来解释,所以这是一段代码

    if x == '':
        counter_kit_label = 10
        for kit in find_everything_from_db('*', 'kit'):
            kit_label = tk.Label(self.kit_listbox, text=f"{kit[0]}, {kit[1].capitalize()}, {kit[2].capitalize()},",
                                 bg='white')
            kit_label.place(x=5, y=counter_kit_label)
            kit_label.bind('<Enter>', lambda event: evidenzia(event))
            kit_label.bind('<Leave>', lambda event: non_evidenzia(event))
            kit_label.bind('<Button-1>', lambda: None)  # todo: creare event bind
            kit_entry_var = tk.StringVar()
            kit_entry = tk.Entry(self.kit_listbox, textvariable=kit_entry_var)
            kit_entry_var.set(f"{kit[4].capitalize()}")
            kit_entry.place(x=108, y=counter_kit_label)
            kit_entry.bind('<Return>', lambda event: self.modifica_luogo_kit(kit_entry.get(), kit, event))
            counter_kit_label += 30
    else:
        pass
def modifica_luogo_kit(self,luogo, kit, event=None):
    print(event.widget.get())
    print(kit)

当我运行脚本并在第一个 tk.Entry 上按“返回键”时,“print(event.widget.get())”的打印结果对应于 sqlite3 第一行预设的第一个条目tab 但 "print(kit)" 对应于 sqlite3 tab 的最新行

【问题讨论】:

  • 你试过用functools.partial代替lambda吗?
  • 不,我还不知道如何使用 functools.partial

标签: python sqlite tkinter bind


【解决方案1】:

试试这个:

import tkinter as tk
from functools import partial

def modifica_luogo_kit(luogo, kit, event=None):
    print("Data in widget =", luogo.get())
    print("Entry number:", kit)

root = tk.Tk()

for kit in range(10):
    kit_entry = tk.Entry(root)
    kit_entry.pack()
    command = partial(modifica_luogo_kit, kit_entry, kit)
    kit_entry.bind("<Return>", command)

我删除了所有不必要的细节,以便更轻松地解决问题。我使用functools.partial 创建了一个在按下“&lt;Return&gt;”时执行的命令。有关functools.partial 的更多信息,请查看this

【讨论】:

    猜你喜欢
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    • 2014-01-03
    • 1970-01-01
    • 2021-07-23
    相关资源
    最近更新 更多