python
1import tkinter as tk 2import tkinter.ttk as ttk 3 4def menu(event): 5 pop = tk.Menu(root, tearoff=False) 6 pop.add_command(label = "昇順", command = lambda : pri()) 7 pop.add_separator() 8 pop.add_command(label = "降順", command = lambda : pri()) 9 pop.post(event.x_root, event.y_root) 10 11def pri(): 12 print("aaa") 13 14array = [[1,"blue"], [2,"red"], [3,"green"], [4,"white"], [5,"black"]] 15 16root = tk.Tk() 17tree = ttk.Treeview(root, column=(1,2), show="headings") 18tree.pack(expand=1, fill=tk.BOTH) 19tree.heading(1,text="No", command=lambda : menu(event)) 20tree.heading(2,text="color") 21 22for i in range(len(array)): 23 num = array[i][0] 24 col = array[i][1] 25 tree.insert("", "end", values=(num, col)) 26 27root.mainloop()
tkinterのtreeviewのheading(上記では、「No」)を押したときにポップアップメニューを表示させたいと考えています。
しかし、
tree.heading(1,text="No", command=lambda : menu(event))
の部分で、eventオブジェクトを持たないので、エラーが出てしまいます。
bindを使えれば、eventオブジェクトを与えることができるのですが、headingとbindを結びつける方法がわかりません。
もしくは、
pop.post(event.x_root, event.y_root)
の部分で、eventオブジェクトを使わなければいいのかもしれませんが、クリックした場所の座標を受け取る方法が、他にわかりません。
どのようにすればよいでしょうか?
どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/06 23:17