Курсор опции Tkinter в классе меню

Я пытаюсь отобразить другой курсор, когда мышь появляется на элементах меню, я подумал, что для этого нужно добавить cursor='something' опция в опциях при создании меню

try:
  import tkinter as tk
except ImportError:
  import Tkinter as tk

class Settings:
    def __init__(self, master):
        # Elements of the menu
        self.master=master
        self.menu = tk.Menu(root, fg="red")
        self.subMenu = tk.Menu(self.menu, cursor="hand1")

    def openMenu(self):
        # Configuration of the menu
        self.menu.add_cascade(label="Options", menu=self.subMenu)
        self.addOptionsSubMenu()
        self.master.config(menu=self.menu)

    def addOptionsSubMenu(self):
        # Add elements at the sub menu
        self.subMenu.add_command(label="Quit", command=self.quit)
        self.subMenu.add_command(label="Do nothing", command=self.passa)

    # Quit the function
    def quit(self):
        exit()

    # Do nothing
    def passa(self):
        pass

root = tk.Tk()
app = Settings(root)
app.openMenu()
root.mainloop()

Но так как курсор не меняется, как мне это сделать?

1 ответ

Документы для Ткинтер Menu заявить, что опция курсора означает " The cursor that appears when the mouse is over the choices, but only when the menu has been torn off "Итак, я не думаю, что вы на самом деле можете делать то, что вы хотите. Только когда ваше подменю было отсоединено (оторвано), вы можете увидеть изменение курсора. Вот демоверсия.

import tkinter as tk

class Settings:
  def __init__(self, master):
    # Elements of the menu
    self.master=master
    self.menu = tk.Menu(root, fg="red")
    self.subMenu = tk.Menu(self.menu, cursor="plus")

  def openMenu(self):
    # Configuration of the menu
    self.menu.add_cascade(label="Options", menu=self.subMenu)
    self.addOptionsSubMenu()
    self.master.config(menu=self.menu)

  def addOptionsSubMenu(self):
    # Add elements at the sub menu
    self.subMenu.add_command(label="Quit", command=self.quit)
    self.subMenu.add_command(label="Do nothing", command=self.passa)

  # Quit the function
  def quit(self):
    exit()

  # Do nothing
  def passa(self):
    pass

root = tk.Tk()
app = Settings(root)
app.openMenu()
root.mainloop()

Другие вопросы по тегам