【问题标题】:How to know in which entry box on a list did I press enter?如何知道我在列表上的哪个输入框中按了 Enter?
【发布时间】:2021-03-02 19:59:25
【问题描述】:

我正在尝试用 Tkinter 中的 Entry 小部件制作一个表格,所以我用它们制作了一个列表。问题是我需要知道用户在哪个框中按 Enter 以执行某些操作,例如,如果有人删除了一行的第一个单元格的内容并按 Enter,我想删除所有其他单元格的内容在该行中,或者如果有人在该行的第一个单元格中写了产品代码,则产品描述应该出现在前面的单元格中。

我已尝试使用此处建议的方法:Tkinter binding a function with arguments to a widget by unutbu,但它似乎不适用于我的条目小部件列表。

这是我尝试过的:

from tkinter import *

root = Tk()
root.configure(background='gray')

item_list_fr = Frame(root, bg='gray', width=450, height=108, padx=3, pady=3)
item_list_fr.grid(row=2, column=0, rowspan=2)

info_tupple=[]

def show(eff=None, row_2=0, column_2=0):
    print(str(row_2), str(column_2))

for row in range(15):
    info_list=[None]*5
    for column in range(5):
        info_list[column]=Entry(item_list_fr)
        info_list[column].bind('<Return>', lambda eff: show(eff, row_2=row, column_2=column))
        info_list[column].grid(row=row+1, column=column)
    info_tupple.append(info_list)

root.mainloop()

如何重写我的代码以使其正常工作?

【问题讨论】:

    标签: python tkinter tkinter-entry


    【解决方案1】:

    你可以像这样使用functools.partial

    from tkinter import *
    import functools
    
    root = Tk()
    root.configure(background='gray')
    
    item_list_fr = Frame(root, bg='gray', width=450, height=108, padx=3, pady=3)
    item_list_fr.grid(row=2, column=0, rowspan=2)
    
    info_tupple=[]
    
    def show(eff=None, row_2=0, column_2=0, event=None):
        print(str(row_2), str(column_2))
    
    for row in range(15):
        info_list=[None]*5
        for column in range(5):
            info_list[column]=Entry(item_list_fr)
            command = functools.partial(show, row_2=row, column_2=column)
            info_list[column].bind('<Return>', command)
            info_list[column].grid(row=row+1, column=column)
        info_tupple.append(info_list)
    
    root.mainloop()
    

    更多答案请看here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多