カスケードメニューバーに名前のリストがあり、名前をクリックすると、関連付けられたIDが関数に渡されます。たとえば、 'Test1'をクリックすると、ID 4556767が関数に渡されます。変数をハードコードされた値に効果的に変換する方法
私はそれを行う方法を理解できません。私は列挙型を使用して、 'コマンド'引数としてラムダ関数に整数を渡してから、メニュー項目のインデックスに対応するIDのリストを設定しようとしました。しかし、これは各反復でコース変更の列挙変数として機能しませんでしたので、最終的にはすべての項目が同じ値を返します。
変数を永続的に保持し、変数ではなくハードコードされているかのように変更する方法はありますか?私はそれを行うことができれば、私はちょうどすぐにそうようなIDを渡すこともできますが
blogs = database_handler.get_blogs()
self.blog_menu_ids = []
for i, blog in enumerate(blogs):
self.blog_menu_ids.append(blog[0])
self.menu_blogs.add_command(label=blog[1],
command=lambda: self.load_blog(i))
:
blogs = database_handler.get_blogs()
for blog in blogs:
self.menu_blogs.add_command(label=blog[1],
command=lambda: self.load_blog(blog[0]))
を、これはのちょうど別の例であります拘束力のある封鎖。 –
デフォルトの引数、つまり 'command = lambda id = blog [0]:self.load_blog(id)'を試してみてください。 – martineau