Возможно, есть лучшая идея для достижения этой цели. Моя идея - отправить событие мыши.
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)
fr = ttk.Frame(root)
btn_menu = ttk.Menubutton(fr, text='fegvd')
btn_menu.grid(row=0, column=0)
def func1(e):
e.widget.event_generate("<Button-1>") # send a mouse press event
btn_menu.bind("<Enter>",func1) # when your mouse enter this widget
btn =ttk.Button(fr, text='grfbvgfev')
btn.grid(row=0, column=1)
btn_menu_st = ttk.Menubutton(fr, text='Gds')
btn_menu_st.grid(row=0, column=2)
fr.pack(fill='x')
file = tk.Menu(btn_menu, tearoff=0, foreground='white')
file.add_command(label='ГЫГ')
style = tk.Menu(btn_menu_st, tearoff=0, foreground='white')
style.add_command(label='Ugu')
btn_menu.configure(menu=file)
btn_menu_st.configure(menu=style)
root.mainloop()
Я обнаружил, что .post
может быть хорошим способом сделать это.
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)
fr = ttk.Frame(root)
btn_menu = ttk.Menubutton(fr, text='fegvd')
btn_menu.grid(row=0, column=0)
def func1(e):
file.post(e.widget.winfo_rootx(),e.widget.winfo_rooty()+e.widget.winfo_height())
btn_menu.bind("<Enter>",func1)
btn =ttk.Button(fr, text='grfbvgfev')
btn.grid(row=0, column=1)
btn_menu_st = ttk.Menubutton(fr, text='Gds')
btn_menu_st.grid(row=0, column=2)
fr.pack(fill='x')
file = tk.Menu(btn_menu, tearoff=0, foreground='white')
file.add_command(label='ГЫГ')
style = tk.Menu(btn_menu_st, tearoff=0, foreground='white')
style.add_command(label='Ugu')
btn_menu.configure(menu=file)
btn_menu_st.configure(menu=style)
root.mainloop()
Но .unpost
не может работать в моем P C, я нашел этот вопрос