tkinter, печать текста при наведении на объекты OptionMenu
Поэтому мне нужно было менять цвета, а также менять цвета при наведении курсора на объекты меню, созданные с помощью OptionMenu в tkinter.
У меня даже есть печать текста при наведении курсора на кнопку, но когда я выпадаю из меню, оно больше не печатается.
Что я делаю неправильно? Как я могу печатать, когда вы нажимаете, чтобы открыть OptionMenu и перемещаться по выбранным элементам?
from tkinter import *
import tkinter as tk
OZoneIzotopeSemiWhite = "#c0c4ca"
buttonBackground = "#303336"
buttonforeground = "#cdd0d7"
BACKGROUND2 = "#1e1f21"
class DropDownButton():
def __init__(self, parent, placement, opTions, **kw):
self.parent = parent
self.options = opTions
self.om_variable = tk.StringVar(self.parent)
self.om_variable.set(self.options[0])
self.om_variable.trace('w', self.option_select)
self.om = tk.OptionMenu(self.parent, self.om_variable, *self.options)
self.om["menu"].config(fg=buttonforeground, bg=buttonBackground, activebackground=OZoneIzotopeSemiWhite, activeforeground=BACKGROUND2, borderwidth = 0)
self.om.config(fg=buttonforeground, bg=buttonBackground, activebackground=OZoneIzotopeSemiWhite, activeforeground=BACKGROUND2, bd =0)
self.om.place(x = placement, y = 2)
self.om.bind("<Enter>", self.on_enter)
self.om.bind("<Leave>", self.on_leave)
def on_enter(self, event):
if self.om == self.options[0]:
print ("Hello")
elif self.om_variable.get() == self.options[1]:
print ("Hello 2!")
else:
print("Hell0 3!")
def on_leave(self, enter):
print ("leave")
def option_select(self, *args):
print (self.om_variable.get())
root = tk.Tk()
DropDownButton(root, 55, ['one', 'two', 'three'])
root.mainloop()
1 ответ
Вы не делаете ничего плохого как такового, но вам может потребоваться изменить то, что вы делаете или ваши ожидания. Когда всплывающее меню появляется при нажатии на виджет меню - как создано кодом меню опции - указатель мыши захватывается всплывающим меню, и это состояние продолжается, пока вы не выполните действие, которое выбирает что-то (или вы нажмете или отпустите за пределы меню, которое отменяется). Ваш стиль, который зависит от состояния menubutton, может заметить это и перейти к чему-то немного неожиданному для вас.
Кстати, если вы открываете меню с помощью привязок клавиш, на самом деле полезен другой вид, так как основное внимание также будет уделено фактическому всплывающему меню.