使用python tkinter从树中单击选择项

时间:2017-10-09 12:39:19

标签: python tkinter key-bindings

我正在研究"树视图"患者列表,我们可以在其中搜索患者并选择一个患者。我想右键单击选定的患者并打开一个新页面,其中包含患者的信息:

Site_id, PRP_Fabric, Phase12 {count}, Phase 13 {count}
6,       BORDB,        3,              2
6,       BORDG,        3,              0
6,       BORDG CHP2,   3,              6
6,       BORDO,        12,             0

我无法通过新窗口的打开来右键单击鼠标,我做了一些编码,但我不是100%理解它因此它不起作用...

对此主题的任何想法都会有所帮助和赞赏!

1 个答案:

答案 0 :(得分:0)

首先绑定树上的右键,而不是在fram上绑定,即用self.frame.bind("<Button-3>", self.click)替换self.tree.bind("<Button-3>", self.click)

然后,您需要知道用户点击的树视图中的哪个项目。为此,您可以使用self.tree.identify_row(event.y)返回位置event.y的项目ID。

并且,如果需要,您可以使用self.tree.item(<item>, 'values')检索存储在树视图中的患者信息。

所以click变为:

def click(self, event):
    item = self.tree.identify_row(event.y)
    if item:  # right click on a patient
        self.master.withdraw()
        self.toplevel = tkinter.Toplevel(self.master)
        self.toplevel.geometry("480x480")
        info = self.tree.item(item, 'values')
        print(info)
        app = PatientPage(self.toplevel)