実現したいこと
Tkinterの右クリックメニューで、マウスのポイントがある所の、ラベルウィジェットに書かれている文字を取得したいのですが、エラーがでて取得が出来ません。
マウスポイントのあるラベル文字の取得方法を教えて下さい
発生している問題・エラーメッセージ
TypeError: Create_Label.__init__.<locals>.<lambda>() missing 1 required positional argument: 'event'
該当のソースコード
modul1
1import tkinter as tk 2import modul2 3 4def main_screen(): 5 root = tk.Tk() 6 root.title("test") 7 root.geometry("640x400") 8 win = modul2.Test_A(root) 9 win.create_frame() 10 win.create_label_a() 11 root.mainloop() 12 13main_screen()
modul2
1import tkinter as tk 2import modul3 3 4# modul2.py 5class Test_A(tk.Frame): 6 def __init__(self, master=None): 7 super().__init__(master) 8 self.grid(sticky="nsew") 9 10 def create_frame(self): 11 self.frm_a = tk.Frame(self,width=400,height=200) 12 self.frm_a.grid(row=0, column=0) 13 14 def create_label_a(self): 15 create_label_a = Create_Label(self.frm_a) 16 17class Create_Label(tk.Frame): 18 19 def __init__(self, master): 20 super().__init__(master) 21 self.grid(sticky="nsew") 22 23 self.lbl_a = tk.Label(self, text='ラベルの1番目') 24 self.lbl_a.grid(row=0,column=0) 25 26 self.lbl_b = tk.Label(self, text='ラベルの2番目') 27 self.lbl_b.grid(row=1,column=0) 28 29 self.lbl_c = tk.Label(self, text='ラベルの3番目') 30 self.lbl_c.grid(row=2,column=0) 31 32 l = [self.lbl_a,self.lbl_b,self.lbl_c] 33 34 self.pmenu = tk.Menu(self, tearoff=0) 35 self.pmenu.add_command(label="ラベルの文字", command=lambda event: modul3.test_a(event)) 36 self.pmenu.add_command(label="ラベル名", command=lambda event: modul3.test_b(event)) 37 38 for v in l: 39 v.bind("<Button-3>", lambda event: modul3.showMenu(self, event))
modul3
1import tkinter as tk 2 3# modul3.py 4def showMenu(self,e): 5 self.pmenu.post(e.x_root, e.y_root) 6 7def test_a(event): 8 s = event.widget.cget('text') 9 print(s) # ラベルの文字を表示 10 11def test_b(event): 12 print(event.widget) 13
補足情報(FW/ツールのバージョンなど)
Python 3.10

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/02/18 04:43