0
クラスmaterial_menu
は、Menubutton
のメソッドgrid
とgrid_forget
を継承して、ウィジェットを表示または非表示にします。私はどのクラスを継承すべきか、どのように関数を変更するのか分かりませんset_state
。助けて、いくつかの例を提案してください。メニュー/メニューからグリッドを継承する方法
from tkinter import *
from tkinter import ttk
class material_menu():
def __init__(self, name):
menubutton = ttk.Menubutton(text=name)
menubutton.menu = Menu(menubutton)
menubutton["menu"] = menubutton.menu
dict = {}
for sheet_name in ["Menu A", "Menu B", "MenuC"]:
dict[sheet_name] = Menu(menubutton.menu)
menubutton.menu.add_cascade(label=sheet_name, menu=dict[sheet_name])
for material in ["item1", "item2", "item3"]:
dict[sheet_name].add_command(label=material, command=lambda sheet_name=sheet_name, material=material: test(sheet_name, material))
def set_state(self, state, row):
if state==0:
menubutton.grid_forget()
else:
menubutton.grid(column=0, row=row, sticky=(N, S, E, W))
def test(sheet_name, material):
print(sheet_name)
print(material)
if __name__ == "__main__":
win = Tk()
a=material_menu("Menubutton")
a.set_state(1, 0)
win.mainloop()
は感謝しています。できます!! –