0

一个。当我们将鼠标悬停在按钮上时,是否可以突出显示组合框?湾。因为如果它的菜单按钮我们有像 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()
4

1 回答 1

0

我设法更改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)
于 2018-07-23T00:22:15.823 回答