Да, можно отключить меню и по-прежнему открывать его, чтобы увидеть список.Меню, используемое в OptionMenu
- это tkinter Menu()
, и вы можете получить к нему доступ.
Пример:
Op = OptionMenu(root, var, 'First', 'Second', 'Third')
Op.pack()
# Op_Menu is the Menu() class used for OptionMenu
Op_Menu = Op['menu']
Затем вы можете сделать что-нибудь с помощью Op
меню такое же как Menu()
В вашем случае, как отключить?
Мы можем использовать menu.entryconfig(index, options)
для настройки state = 'disabled' / 'normal'
в соответствии с пользователем.
Пример:
import tkinter as tk
root = tk.Tk()
root.geometry('250x250+100+100')
str = tk.StringVar()
str.set('Select')
Op = tk.OptionMenu(root, str, "First", "Second", "Third")
Op.pack()
# This will disable the First and Third entries in the Op
# state = 'disable' / 'normal'
Op['menu'].entryconfig(0, state='disable')
Op['menu'].entryconfig("Third", state='disable')
entries = Op['menu'].index('end') # This will get the total no. of entries.
# If you want to disable all of the entries uncomment below 2 lines.
# for i in range(entries+1):
# Op['menu'].entryconfig(i, state='disable')
root.mainloop()

Для лучшего понимания того, как Menu()
определяется внутри OptionMenu
класса, можно проверитьисходный код OptionMenu()
класса . (из строки 3959 )