Tkinter Menubutton options not showing

Viewed 20

I am able to display the window, and my menubutton is there but nothing happens when I click on it. I added the menu components for it, but for some reason it wont show.

import tkinter as tk
from tkinter import ttk
from  ttkthemes import ThemedStyle

Label_font = 'Times New Roman'
font_size = 15
tkinter_theme = 'equilux'

root = tk.Tk()
root.title('Welcome to Options')
root.geometry('350x600')
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
root.configure(background = 'grey14')

button_frame = ttk.Frame(root,  padding="5 5 10 10")
button_frame.grid(column=0, row=1)

values_frame = ttk.Frame(root,  padding="5 5 10 10")
values_frame.grid(column=0, row=0)

options_frame = ttk.Frame(root,  padding="5 5 10 10")
options_frame.grid(column=1, row=0)


style =ThemedStyle(root)
style.set_theme('equilux')


ttk.Label(values_frame, text="Pixel size:", font=(
Label_font, font_size)).grid(column=0, row=0, padx=5, pady=5)
ttk.Label(values_frame, text="Min object size:", font=(
Label_font, font_size)).grid(column=0, row=1, padx=5, pady=5)
ttk.Label(values_frame, text="# of Files per condition:\n (Excel Sheet Size)", font=(
Label_font, font_size)).grid(column=0, row=2, padx=5, pady=5)
ttk.Label(values_frame, text="Object tracking memory:", font=(
Label_font,font_size)).grid(column=0, row=3, padx=5, pady=5)
ttk.Label(values_frame, text="Search radius:", font=(
Label_font, font_size)).grid(column=0, row=4, padx=5, pady=5)
ttk.Label(values_frame, text="Path linking strategy:", font=(
Label_font, font_size)).grid(column=0, row=5, padx=5, pady=5)

pixel_size = ttk.Entry(values_frame, font=(
Label_font, font_size)).grid(column=1, row=0, padx=5, pady=5)
min_size_trk = ttk.Entry(values_frame, font=(
Label_font, font_size)).grid(column=1, row=1, padx=5, pady=5)
sheet_size = ttk.Entry(values_frame, font=(
Label_font, font_size)).grid(column=1, row=2, padx=5, pady=5)
trk_memory = ttk.Entry(values_frame, font=(
Label_font,font_size)).grid(column=1, row=3, padx=5, pady=5)
search_range = ttk.Entry(values_frame, font=(
Label_font, font_size)).grid(column=1, row=4, padx=5, pady=5)

menubut = ttk.Menubutton(values_frame, text='Strategies').grid(column=1, row=5, padx=5, pady=5)


file = tk.Menu(menubut)


file.add_radiobutton(label = 'Numba')
file.add_radiobutton(label = 'Recursive')
file.add_radiobutton(label = 'Nonrecursive')
file.add_radiobutton(label = 'Drop')
file.add_radiobutton(label = 'Auto')



root.mainloop()

I read through the tkinter docs as well as a few different websites showing examples, and I still can't get it figured out. I appreciate the help!

1 Answers

You have to first change menubut assignment a bit (currently the value of menubut is None) and you have forgot to configure the menubutton to have that menu object as its menu, so just move grid to a new line (because it returns None) and then specify the menubutton's menu as the menu object:

menubut = ttk.Menubutton(values_frame, text="Strategies")
menubut.grid(column=1, row=5, padx=5, pady=5)

file = tk.Menu(menubut)
menubut["menu"] = file

You can also take a look a this example in the documentation (at the bottom of the page)

Related