0
メニューと呼ばれるクラスを作成しようとしています。これは、与えられたウィジェットに対して右クリックメニューを作成します。この場合自己ラベル。。Pythonクラスを理解して、カスタムウィジェットを作成しようとしています
私は私のプログラムを実行するときしかし、私は次のエラーを取得する:
Traceback (most recent call last):
File "<string>", line 245, in run_nodebug
File "<module1>", line 57, in <module>
File "<module1>", line 55, in run
File "<module1>", line 52, in __init__
File "<module1>", line 12, in __init__
File "C:\Python26\Lib\Tkinter.py", line 2595, in __init__
Widget.__init__(self, master, 'menu', cnf, kw)
File "C:\Python26\Lib\Tkinter.py", line 1923, in __init__
BaseWidget._setup(self, master, cnf)
File "C:\Python26\Lib\Tkinter.py", line 1901, in _setup
self.tk = master.tk
AttributeError: B3Menu instance has no attribute 'tk'
は私のプログラム:
import Tkinter
class B3Menu:
def __init__ (self, wid):
self.wid = wid
self.MeVar = Tkinter.StringVar()
self.Me = Tkinter.Menu(self, tearoff=0,
activebackground='grey15',
activeforeground='grey95')
self.Me.add_radiobutton(label='Cut', variable=self.MeVar,
command=self.menu_beh,
accelerator='Ctrl-x')
self.Me.add_radiobutton(label='Copy', variable=self.MeVar,
command=self.menu_beh,
accelerator='Ctrl-c')
self.Me.add_separator()
self.Me.add_radiobutton(label='Paste', variable=self.MeVar,
command=self.menu_beh,
accelerator='Ctrl-v')
self.wid.bind("<ButtonRelease-3>", self.menu_pos)
def menu_pos (self, event=None):
self.Me.post(event.x_root, event.y_root)
def menu_beh (self):
''' Handles the behavior of right click menu '''
if self.MeVar.get() =='Cut':
self.wid.event_generate("<<Cut>>")
if self.MeVar.get() =='Copy':
self.wid.event_generate("<<Copy>>")
if self.MeVar.get() =='Paste':
self.wid.event_generate("<<Paste>>")
class Suite(Tkinter.Tk):
def __init__(self):
Tkinter.Tk.__init__(self)
self.Label = Tkinter.Label(self, text='hello')
self.Label.pack()
B3Menu(self.Label)
def run():
Suite().mainloop()
if __name__ == '__main__':
run()
これはニシキヘビクラスのシステムを使用してウィジェットを作成する時、私の最初の試みです。だから私は間違ったことをしていると確信しています。どんな助けでも大歓迎です。