0

Python と Tkinter を使用しています。「オン」がそのうちの1つである3つの選択肢を持つオプションメニューがあります。選択時に「オン」を緑色にしたい。フォントとは言いません。「オン」を選択すると、オプションメニューの背景が緑色になり、他のオプションはデフォルトの灰色になります。

これどうやってするの?オプションメニューの背景全体を別の色にするだけの他の投稿を見たことがありますが、特定の選択肢が選択されたときにのみ色が必要です。ありがとうございました!

4

3 に答える 3

1

Uの下にこれをファイルしてください。

from Tkinter import *

OPTIONS = (
    "egg",
    "go",
    "spam"
)

controlsMap = {}

root = Tk()

def callbackFunc(name, index, mode):
    value = root.getvar(name) #getvar: return the value of Tcl variable NAME
    widget = controlsMap[name]
    if value == 'go':
        widget.config(bg='green',fg='black',
                 activebackground='green',
                 activeforeground='black')
    else:
        widget.config(bg='SystemButtonFace',fg='SystemButtonText',
                 activebackground='SystemButtonFace',
                 activeforeground='SystemButtonText')


var1 = StringVar(root, name='var1') #give it a master and a name
var1.set(OPTIONS[0])
om1 = OptionMenu(root, var1, *OPTIONS)
om1.config(width=5)
om1.grid(row=0, column=0)
controlsMap['var1'] = om1
var1.trace_variable('w', callbackFunc)

var2 = StringVar(root, name='var2') #
var2.set(OPTIONS[0])
om2 = OptionMenu(root, var2, *OPTIONS)
om2.config(width=5)
om2.grid(row=0, column=1)
controlsMap['var2'] = om2
var2.trace_variable('w', callbackFunc)

var3 = StringVar(root, name='var3') #
var3.set(OPTIONS[0])
om3 = OptionMenu(root, var3, *OPTIONS)
om3.config(width=5)
om3.grid(row=0, column=2)
controlsMap['var3'] = om3
var3.trace_variable('w', callbackFunc)


root.mainloop()
于 2011-08-16T06:38:38.427 に答える
0

あなたはそれにトレースを置くことができます:

from Tkinter import *

OPTIONS = (
    "egg",
    "go",
    "spam"
)

root = Tk()

var = StringVar()
var.set(OPTIONS[0]) # default

def callbackFunc(name, index, mode):
    value = var.get()
    if value == 'go':
        om.config(bg='green',fg='black',
                 activebackground='green',
                 activeforeground='black')
    else:
        om.config(bg='SystemButtonFace',fg='SystemButtonText',
                 activebackground='SystemButtonFace',
                 activeforeground='SystemButtonText')

om = OptionMenu(root, var, *OPTIONS)
om.pack()

Callbackname = var.trace_variable('w', callbackFunc)

root.mainloop()
于 2011-08-13T03:52:04.533 に答える
0

Windows を使用している場合、メニューはネイティブ コントロールであり、これほど多くのカスタマイズが許可されていないため、うまくいきません。同じことがosxにも当てはまるかもしれませんが、はっきりとは覚えていません。

他のプラットフォームでは、オプション メニューに関連付けられたメニューのentryconfigureメソッドを使用できます。これにより、メニューの各エントリの背景色を設定できます。

于 2011-08-09T22:51:35.147 に答える