2024-10-02 00:41:11 发布
网友
我正在使用tkinterTreeview小部件来显示数据库。单击其中一个标题时的命令用于根据单击的列对表进行排序。在
Treeview
另外,我希望当我将鼠标悬停(或右键单击)在其中一个标题上时显示工具提示框。工具提示对于其他小部件来说不是问题,但是树视图的标题当然不是完整的小部件。在
除了通常的命令,如何将任何操作绑定到标题?在
使用上面Mihail提出的tree.heading命令,但是请注意,如果您是从class中运行的,那么您需要像往常一样将self传递到方法中。在
tree.heading
class
下面是一个Python 2片段,它将加载treeview并演示调用方法和外部函数:
import Tkinter import ttk class TreeWindow: def __init__(self): win = Tkinter.Tk() tree = ttk.Treeview(win,height=10,padding=3) self.tree = tree self.win = win self.tree["columns"] = ("Column 1","Column 2") self.tree.grid(row=1,column=0,sticky=Tkinter.NSEW) self.tree.column("Column 1", width=100) self.tree.heading("Column 1", text="Column 1", command=PrintColumnName1) self.tree.column("Column 2", width=100) self.tree.heading("Column 2", text="Column 2", command=self.PrintColumnName2) self.tree.insert('', 0, text="Row 1", values=("a",1)) self.tree.insert('', 1, text="Row 2", values=("b",2)) self.win.mainloop() def PrintColumnName2(self): print("Column 2") def PrintColumnName1(): print("Column 1") treeWindow = TreeWindow()
请注意,由于某些原因,第一次单击似乎不会立即生效,而是会卡在缓冲区中,直到您第二次单击为止—非常渴望听到任何人对此的解释。在
您可以将事件绑定到treeview小部件本身。小部件有一个名为identify的方法,可用于确定事件发生在树视图的哪个部分。在
例如:
... self.tree = ttk.Treeview(...) self.tree.bind("<Double-1>", self.on_double_click) ... def on_double_click(self, event): region = self.tree.identify("region", event.x, event.y) if region == "heading": ...
在配置中使用-command:
def foo(): pass tree.heading(column1, text = 'some text', command = foo)
使用上面Mihail提出的
tree.heading
命令,但是请注意,如果您是从class
中运行的,那么您需要像往常一样将self传递到方法中。在下面是一个Python 2片段,它将加载treeview并演示调用方法和外部函数:
请注意,由于某些原因,第一次单击似乎不会立即生效,而是会卡在缓冲区中,直到您第二次单击为止—非常渴望听到任何人对此的解释。在
您可以将事件绑定到treeview小部件本身。小部件有一个名为identify的方法,可用于确定事件发生在树视图的哪个部分。在
例如:
在配置中使用-command:
相关问题 更多 >
编程相关推荐