Как добавить последовательное выпадающее меню в одном окне Tkinter? - PullRequest
1 голос
/ 18 апреля 2019

Я хотел бы добавить два выпадающих меню в окно Tkinter.

У меня уже есть код для одного выпадающего меню, которое прекрасно работает. Но в настоящее время второе popupMenu2 никогда не появляется.

root = tk.Tk()

showinfo('Window', "Select a metadata file")

root.update()

# setup window
root.title("Choose")

frame = tk.Frame(root)
frame.grid(row=3, column=2)

category = tk.StringVar()

tk.Button(frame, background="gray", text="Play Clip", command=play_audio).grid(row=1, column=1)

somechoices = {"A", "B", "C", "D"}
somemorechoices = {"1", "2", "3", "4"}
category.set("Pick a category")

popupMenu = tk.OptionMenu(frame, category, *somechoices)
popupMenu2 = tk.OptionMenu(frame, category, *somemorechoices) # this doesn't appear in the window
popupMenu.grid(row=3, column=1)

tk.Label(frame, text="Pick a category: ").grid(row = 3, column = 0)
tk.Button(frame, text="Next", command=next_recording, bg="gray").grid(row=3, column=2) # next_recording refers to a function that plays music clips

root.mainloop() 

Я не думаю Мне нужно что-то изменить в tk.Button - пользователь может нажать кнопку, чтобы перейти в функцию после выбора обоих вариантов классификации. Но как мне добавить второй выпадающий список для выбора?

1 Ответ

2 голосов
/ 18 апреля 2019

Вам нужно вызвать grid() для обоих всплывающих меню (и при необходимости скорректировать значения column):

root = tk.Tk()

showinfo('Window', "Select a metadata file")

root.update()

# setup window
root.title("Choose")

frame = tk.Frame(root)
frame.grid(row=3, column=2)

category = tk.StringVar()

btn = tk.Button(frame, background="gray", text="Play Clip", command=play_audio)
btn.grid(row=1, column=1)

somechoices = {"A", "B", "C", "D"}
somemorechoices = {"1", "2", "3", "4"}
category.set("Pick a category")

popupMenu = tk.OptionMenu(frame, category, *somechoices)
popupMenu.grid(row=3, column=1)
popupMenu2 = tk.OptionMenu(frame, category, *somemorechoices)
popupMenu2.grid(row=3, column=2)  # ADDED

tk.Label(frame, text="Pick a category: ").grid(row=3, column=0)
btn = tk.Button(frame, text="Next", command=next_recording, bg="gray")
btn.grid(row=3, column=3)

root.mainloop()
...