如何知道Tkinter的网格上的标签位于哪一行?

时间:2018-11-17 21:36:09

标签: python tkinter

我有一个正在创建的表格(网格),由标签组成。

这些标签显示的是我要添加到列表中的元素,因此,当我向列表中添加新的obj时,表将增长,并显示更多标签。

我的目的是我可以单击一个标签,并使其打印该标签所在的表的行。

import tkinter as tk

phrasesdb = []

def debug(event):
    #this is where I'd have it print the row
    #but how do I get it?
    #for example, it the label I pressed was in the row 2, it'd print 2
    print( ??? )

#Add obj to list
def addline():
    ##This creates new obj with values from the input fields, and inserts it in the list
    newobj = {"text": newtext.get()} #This is getting the text from an Entery
    phrasesdb.append(newobj)

    ##This shows new obj on the table
    newesttext = tk.Label(tableframe, text=newobj["text"])
    newesttext.grid(row=len(phrasesdb), column=1, sticky=tk.W)

    newesttext.bind("<Double-Button-1>", debug)

我已经能够在表格中显示它们,并且让它识别出我在按正确的标签(已通过简单的print(“ yup,this it it”测试)),但我并没有能够弄清楚如何访问我单击的标签行。

我是python尤其是tkinter的新手,很抱歉,如果这是一个非常简单的问题,但是我在其他任何地方都找不到答案...

2 个答案:

答案 0 :(得分:1)

您可以使用grid_info方法,该方法将返回该项目的网格属性的字典。

def debug(event):
    widget = event.widget
    info = widget.grid_info()
    row = info['row']

答案 1 :(得分:0)

如果我在点击后已经收到的标签上使用.grid_info()['row']正确理解了您的问题,则应该返回所需的结果。