Можно ли выделить комбинированный список при наведении на него мышью? Как активный фон для кнопки меню?

А. Можно ли выделить выпадающий список при наведении мыши на кнопку? б. Потому что, если у него кнопка меню, у нас есть опция, подобная activebackground, которая помогает выделить кнопку меню, когда на нее наведена мышь.

Я попробовал некоторые варианты для комбинированного списка, но он просто изменил цвет выделения или списка и т. Д., Но не смог выделить комбинированный список, когда мышь перемещается над ним.

Может ли кто-нибудь предоставить некоторые предложения или комментарии к тому же?

#!/usr/intel/bin/python2.7

import Tkinter
from Tkinter import *
from Tkinter import Tk, StringVar
import ttk
import tkFont

try:
    import Tkinter as tk
    import Tkinter.ttk as ttk
except ImportError:
    import Tkinter as tk
    import ttk


class Application:

def __init__(self, parent):
    self.parent = parent
    self.combo()

def combo(self):

    MyFontBtn = tkFont.Font(family='courier', size=20, weight=tkFont.BOLD)

    self.box_value = StringVar()
    self.box = ttk.Combobox(self.parent, textvariable=self.box_value, state='readonly', width=39, font=MyFontBtn)
    self.box['values'] = ('Default', 'User Defined', 'Load From SS')
    self.box.set("Hello Click Drop Down")
    self.box['state'] = 'readonly'
    self.box.bind("<<ComboboxSelected>>", self.print_selected_value)
    self.box.option_add('*TCombobox*Listbox.selectBackground', 'gray50')
    self.box.option_add('*TCombobox*Listbox.font', MyFontBtn)

    #self.box.option_add('TCombobox.background', 'gray50')


    style1 = ttk.Style()
    style1.map('TCombobox', selectbackground=[('readonly', 'red')])
    #style1.map('TCombobox', selectforeground=[('readonly', 'blue')])

    style1.map("self.box",
                foreground=[('pressed', 'red'), ('active', 'blue')]
                #background=[('pressed', '!disabled', 'black'), ('active', 'white')]
              )
    self.box.grid(column=0, row=0)


def print_selected_value(self, *args):
    print "Vaue selected is:", self.box.get()

1 ответ

Мне удалось изменить foreground цвет (не) выбранной опции. Только selectbackground изменения. Combobox устанавливает hover состояние при наведении мыши.

  style1.map('TCombobox', selectforeground=[('hover', 'red')], selectbackground=[('hover', 'green')])
  style1.map('TCombobox', foreground=[('hover', 'red')], background=[('hover', 'green')])

Редактировать:

Ниже приведена модификация для определения флагов состояния элемента управления во время взаимодействия с мышью.

class Application:

  def __init__(self, parent):
      self.parent = parent
      self.combo()
      self.printState()

  def printState(self):
    print ("State Combo:", self.box.state())
    self.parent.after(1000, self.printState)
Другие вопросы по тегам