在组合框项目悬停上绑定事件

时间:2013-12-05 03:26:46

标签: python tkinter ttk

以下是演示我的问题的简单ttk对话框示例:

from Tkinter import *
import ttk

items = ["Item %d" % (i+1,) for i in range(9)]
d = dict(zip(items, [i + ' description.' for i in items]))

root = Tk()
frame = ttk.Frame(root, padding=8)

cb_val = StringVar()
cb_val.set('Item 1')
cb = ttk.Combobox(frame, textvariable=cb_val, height=4)
cb['values'] = sorted(d.keys())

statusmsg = StringVar()
status = ttk.Label(frame, textvariable=statusmsg, relief='solid')

frame.grid()
cb.grid()
status.grid(pady=(80, 0), sticky='SWE')

cb.bind('<<ComboboxSelected>>',
        lambda e: statusmsg.set(d[sorted(d.keys())[int(cb.current())]]))

root.mainloop()

screenshot

所以我绑定<ComboboxSelected>事件以使用current()方法提取选定的组合框项目,然后使用字典查找在状态栏中打印项目描述。

这还不错,但我想在可能的情况下绑定“悬停项目”事件,并从组合框下拉菜单中提取当前悬停项目的值(或者如我所希望获得的示例屏幕截图“项目3描述。“在状态栏中)

由于我找不到任何关于此类事件的文档,或者我想在此处提出另一种方法。

1 个答案:

答案 0 :(得分:-1)

这是我的简短例子

from tkinter import *
from tkinter import ttk


def enviar():
    print(samples.get())

root = Tk()





samples = StringVar()

a = ttk.Combobox(root,textvariable=samples)

a['values']=['San Salvador','La Union','San Marcos','El Puerto']
a.current(0)
a.grid(row=0,column=0)


Button(root,text='enviar',command=enviar).grid(row=0,column=1)
Label(root,text='Ha seleccionado: ',font=('Verdana',12)).grid(row=1,column=0)
Label(root,textvariable=samples).grid(row=1,column=1,sticky=E)




root.mainloop()