#python #tkinter
#python #tkinter
Вопрос:
Я пишу приложение в Tkinter, в котором у меня есть виджет меню. Я изменил цвет фона моего виджета меню, однако раздражающий цвет границы, похоже, не изменился. Я пытался использовать атрибут highlightthickness, но это не сработало. Для справки, вот код для моего виджета меню:
menu = tkinter.Menubutton(title_bar, text = "⋮", width = 3, bd = 0, bg = "#E6B905", relief = "flat", pady = 4, activebackground = "#D1A804")
menu.grid(row = 0, column = 3, padx = 0, sticky = "W")
CreateToolTip(menu, "Other Options")
accentItems.append(menu)
menu.menu = tkinter.Menu(menu, tearoff = 0, bd = 0, relief = "solid", font = "Segoe_UI 9", bg = "#333333", activeborderwidth = 0, activebackground = "#404040", fg = "white", activeforeground = "white", selectcolor = "white")
menu["menu"] = menu.menu
menu.menu.add_command(label = "Choose theme:")
menu.menu.add_radiobutton(label = "Blue", command = accentblue)
menu.menu.add_radiobutton(label = "Yellow", command = accentyellow)
menu.menu.add_radiobutton(label = "Green", command = accentgreen)
menu.menu.add_radiobutton(label = "Pink", command = accentpink)
menu.menu.add_separator()
menu.menu.add_command(label = "Open Note", command = openFile)
menu.menu.add_command(label = "Save Note As", command = saveNoteAs)
menu.menu.add_command(label = "Save Note", command = saveNote)
menu.menu.add_separator()
menu.menu.add_command(label = "Undo", command = Undo)
menu.menu.add_command(label = "Redo", command = Redo)
menu.menu.add_command(label = "Quit", command = windowdestroy)
menu.menu.add_command(label = "Help")
И вот скриншот результата:
Нажмите здесь, чтобы просмотреть скриншот
Это та раздражающая белая граница, которую я хочу удалить. Был бы очень признателен за любую помощь!
Комментарии:
1. Вы не можете удалить ее (в Windows). Я создал целую систему меню с нуля из-за этой точной проблемы. На самом деле это было не очень сложно. Я просто использовал измененный
Listbox
.2. @MichaelGuidry Хорошо, спасибо за совет! Можете ли вы поделиться сутью того, что вы сделали с
Listbox
, или с кодом itsef?3. Я подклассировал
Listbox
и отразил всеMenu
методы с пользовательской логикой. Например, в моем меню также естьadd_command
метод, который ожидает те же аргументы, но я написал всю логику для управления этими аргументами. Чтобы она отображалась (исчезла), было выполнено с помощьюplace
иplace_forget
. Всего было около 400 строк кода, настолько крошечный и простой. Если подумать, все меню — это набор ярлыков, которые что-то делают, когда вы нажимаете на них.