我有一个正在创建的表格(网格),由标签组成。
这些标签显示的是我要添加到列表中的元素,因此,当我向列表中添加新的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的新手,很抱歉,如果这是一个非常简单的问题,但是我在其他任何地方都找不到答案...
答案 0 :(得分:1)
您可以使用grid_info方法,该方法将返回该项目的网格属性的字典。
def debug(event):
widget = event.widget
info = widget.grid_info()
row = info['row']
答案 1 :(得分:0)
如果我在点击后已经收到的标签上使用.grid_info()['row']正确理解了您的问题,则应该返回所需的结果。