So Steuern Sie die tkinter combobox-Auswahl hervorheben

Schrieb ich eine kleine farad Konverter zu lernen, GUI-Programmierung. Es funktioniert Super, sieht gut aus-ish. Das problem ist nur, ich kann nicht scheinen, um herauszufinden, wie die Kontrolle dieser seltsamen Hervorhebung, das kommt auf meine ttk.Combobox Auswahl. Ich habe eine ttk.Style(), aber es ist nur verändert die Farben des ttk.Combobox hintergrund, Einträge, etc. Ich habe auch versucht, die änderung openbox/gtk Themen.

So Steuern Sie die tkinter combobox-Auswahl hervorheben

Ich spreche über das, was sieht man dort auf den text "microfarads (uF)".

Es in Ordnung sein würde, wenn es hob die ganze Kiste; aber ich hätte es lieber vollständig verschwunden sind.

Wie kann ich manipulieren, eine ttk.Combobox's Auswahl markieren?

# what the farad?
# thomas kirkpatrick (jtkiv)

from tkinter import *
from tkinter import ttk

# ze la programma.
def conversion(*args):
# this is the numerical value
inV = float(inValue.get())
# these two are the unit (farads, microfarads, etc.) values
inU = inUnitsValue.current()
outU = outUnitsValue.current()

# "mltplr" is multiplied times inValue (inV)
if inU == outU:
    mltplr = 1
else:
    mltplr = 10**((outU - inU)*3)
outValue.set(inV*mltplr)

# start of GUI code
root = Tk()
root.title("What the Farad?")

# frame
mainFrame = ttk.Frame(root, width="364", padding="4 4 8 8")
mainFrame.grid(column=0, row=0)

# input entry
inValue = StringVar()
inValueEntry = ttk.Entry(mainFrame, width="20", justify="right", textvariable=inValue)
inValueEntry.grid(column=1, row=1, sticky="W")

# input unit combobox
inUnitsValue = ttk.Combobox(mainFrame)
inUnitsValue['values'] = ('kilofarads (kF)', 'farads (F)', 'millifarads (mF)', 'microfarads (uF)', 'nanofarads (nF)', 'picofarads (pF)')
inUnitsValue.grid(column=2, row=1, sticky="e")
inUnitsValue.state(['readonly'])
inUnitsValue.bind('<<ComboboxSelected>>', conversion)

# result label
outValue = StringVar()
resultLabel = ttk.Label(mainFrame, textvariable=outValue)
resultLabel.grid(column=1, row=2, sticky="e")

# output unit combobox
outUnitsValue = ttk.Combobox(mainFrame)
outUnitsValue['values'] = ('kilofarads (kF)', 'farads (F)', 'millifarads (mF)', 'microfarads (uF)', 'nanofarads (nF)', 'picofarads (pF)')
outUnitsValue.grid(column=2, row=2, sticky="e")
outUnitsValue.state(['readonly'])
outUnitsValue.bind('<<ComboboxSelected>>', conversion)

# padding for widgets
for child in mainFrame.winfo_children(): child.grid_configure(padx=4, pady=4)

# focus
inValueEntry.focus()

# bind keys to convert (auto-update, no button)
root.bind('<KeyRelease>', conversion)

root.mainloop()

InformationsquelleAutor jtkiv | 2011-03-08

Schreibe einen Kommentar