Почему Menubutton не работает в этом коде? - PullRequest
0 голосов
/ 20 апреля 2020

Нашел довольно интересный способ создания меню в Tkinter GUI - Menubutton. Но, к сожалению, этот код не работает (точнее, когда вы нажимаете на Menubutton связанное меню не открывается):

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

root.option_add("*Menu.borderWidth", "0")
root.option_add("*Menu.activeBorderWidth", "0")
root.option_add("*Menu.background", "black")


style = ttk.Style(root)


menu = tk.Menu(root)

btn_menu = ttk.Menubutton(root, text='fegvd')
btn_menu.pack()

file = tk.Menu(btn_menu, tearoff=0, foreground='white')
file.add_command(label='ГЫГ')

style.configure('TMenubutton', background='black', foreground='white', indicatoron=0, menu=file, direction='delow', state='active')

root.mainloop()

Хотя, если я использую не ttk.Menubutton, а tk.Menubutton, тогда все работает:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

root.option_add("*Menu.borderWidth", "0")
root.option_add("*Menu.activeBorderWidth", "0")
root.option_add("*Menu.background", "black")


menu = tk.Menu(root)

btn_menu = tk.Menubutton(root, text='fegvd')
btn_menu.pack()


file = tk.Menu(btn_menu, tearoff=0, foreground='white')
file.add_command(label='ГЫГ')

btn_menu.configure(background='black', foreground='white', indicator=0, menu=file, state='active')

root.mainloop()

Почему? Подскажите, пожалуйста, в чем проблема?

1 Ответ

0 голосов
/ 20 апреля 2020

Вы не можете использовать стиль, чтобы связать меню с меню. Вы должны сделать это точно так же, как и в меню tk:

btn_menu.configure(menu=file)
...