【发布时间】:2016-02-17 01:42:04
【问题描述】:
目标:我在列表框中选择一个选项。我希望用黄色突出显示该选项。
问题:之前选择的所有选项也都以黄色突出显示。我希望将最新的选择保留为黄色,并将列表框中的其他所有内容保留为白色。
import tkinter as tk
root = tk.Tk()
fontfamily = tk.font.families()
def selectcolor(col=None):
fontlist.config(bg='white') ##<--PROBLEM CODE
option_selected = fontlist.curselection()
fontlist.itemconfig(option_selected[0], bg='yellow')
fontlist = tk.Listbox (root, bg='white')
fontlist.grid()
for eachfont in fontfamily:
fontlist.insert(tk.END, eachfont)
fontlist.bind('<<ListboxSelect>>', selectcolor)
##<<ListboxSelect>> is magic, this option is not shown in_
##ebook John Shipman tkinter 8.5 reference
##.curselection() doesn't work as expected
tk.mainloop()
【问题讨论】:
-
我认为通过
fontlist.config(bg='white')您正在尝试设置Listbox而不是其项目的背景颜色。例如,您可以跟踪最后一个选定的项目并将其着色为白色,然后再将新的选定项目着色为黄色。问题是,由于所选项目的颜色只有在项目失去焦点后才可见(至少在我的情况下),所以你永远不会看到黄色项目......我希望有人提出另一个聪明的解决方案... -
谢谢@nbro。我在 selectcolor() 中添加了如下代码,似乎仍然无法正常工作。 size=fontlist.size() while size: fontlist.itemconfig(size-1,bg='white') size-=1
标签: python-3.x tkinter