【发布时间】:2017-09-26 04:46:51
【问题描述】:
当用户点击一个项目并将其打印出来但由于某种原因identify() 没有接收到 event.y 变量时,它的意思是获取树视图项目的 iid,也许?
import tkinter as tk
from tkinter import ttk
class App:
def __init__(self):
self.root = tk.Tk()
self.tree = ttk.Treeview()
self.tree.pack(side="top", fill="both")
self.tree.bind("<<TreeviewSelect>>", self.tree_click_event)
for i in range(10):
self.tree.insert("", "end", text="Item %s" % i)
self.root.mainloop()
def tree_click_event(self, event):
iid = self.tree.identify(event.x,event.y)
print (iid)
if __name__ == "__main__":
app = App()
单击树视图中的项目时,错误是:
TypeError: identify() missing 1 required positional argument: 'y'
针对@TessellatingHeckler 的评论,根据链接对代码进行的编辑不会产生错误,但仍不会打印出iid:
def tree_click_event(self, event):
item = self.tree.identify('item', event.x,event.y)
print (item)
感谢您从@CommonSense 接受的答案总之看来我需要使用 self.tree.bind('', self.tree_click_event) 而不是 treeviewselect 来解决这个特定问题,但感谢您提供第二个做事方式也是如此
【问题讨论】:
-
那么到底发生了什么?你有错误吗?什么都没有打印?打印错了?
-
标题应该总结问题
-
@TessellatingHeckler 我已经编辑了我的帖子以反映您的评论
-
另一种解决方案是
iid=tree.focus()