首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AttributeError:'str‘对象在treeview项中没有属性'x’

AttributeError:'str‘对象在treeview项中没有属性'x’
EN

Stack Overflow用户
提问于 2019-10-19 05:29:48
回答 2查看 461关注 0票数 1

使用python3.7的

嗨。我正在尝试获取所选的treeview项,并希望在单击“左”菜单项后打印它。这是我的树视图列表。当我用停止进程命令右键单击菜单请求时。我正在尝试获取所选的项目并打印出来,但是它给了我错误。

代码语言:javascript
复制
AttributeError: 'str' object has no attribute 'x' in treeview item

这里是我的树列表

在这里输入图像描述

这里是我的代码

代码语言:javascript
复制
self.popup_menu.add_command(label="stop process",
                                    command=lambda:self.delete_selected("<Button-3>"))
        self.tree.bind('<Button-3>', self.popup)

    def delete_selected(self, event):
        item = self.tree.identify('name','ID',event.x, event.y)
        print(item)

    def popup(self, event):
        """action in event of button 3 on tree view"""

        try:
            self.popup_menu.tk_popup(event.x_root, event.y_root, 0)
        finally:
            self.popup_menu.grab_release()
EN

回答 2

Stack Overflow用户

发布于 2019-10-19 05:37:45

您正在将一个str传递给delete_selected,然后尝试读取它的xy属性。不要将"<Button-3>"字符串传递给方法。相反,在lambda中接收event参数并将其传递给delete_selected

代码语言:javascript
复制
self.popup_menu.add_command(label="stop process", command=lambda event:self.delete_selected(event))

或者简单地删除lambda并直接传递函数:

代码语言:javascript
复制
self.popup_menu.add_command(label="stop process", command=self.delete_selected)
票数 0
EN

Stack Overflow用户

发布于 2019-10-19 08:03:19

这对我来说很管用

代码语言:javascript
复制
self.popup_menu.add_command(label="stop process",
                                    command=self.delete_selected)

        self.tree.bind('<Button-3>', self.popup)



def delete_selected(self):

    try:
        curItem = self.tree.item(self.tree.focus())
        item = self.tree.selection()[0]
        self.kill_process(curItem['values'])
        self.tree.delete(item)

    except:
         pass
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58460780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档