如何使用绑定事件立即在组合框中打印文本?

时间:2017-07-09 15:39:14

标签: python tkinter

from Tkinter import *
import ttk
main=Tk()

def print1(event):
    string = ""
    string = combobox1.get()
    print combobox1.get()

val = StringVar()
combobox1 = ttk.Combobox(main, textvariable=val, height=4)
combobox1.bind("<Key>", print1)
combobox1.focus_set()
combobox1.pack()


mainloop()

如何解决问题,即当我按下第一个按钮时,它没有立即显示 例如,当我按下a时,它没有显示任何内容,然后我按下了b。它将显示a,但不显示ab。 我该如何解决这个错误? 感谢。

2 个答案:

答案 0 :(得分:2)

你非常接近。绑定语句与您需要的略有不同。问题是它是在钥匙交付给组合框之前打印的。现在它一直等到释放密钥才能触发事件。

from Tkinter import *
import ttk
main=Tk()

def print1(event):
    string = ""
    string = combobox1.get()
    print combobox1.get()

val = StringVar()
combobox1 = ttk.Combobox(main, textvariable=val, height=4)
combobox1.bind("<KeyRelease>", print1)
combobox1.focus_set()
combobox1.pack()


mainloop()

答案 1 :(得分:0)

@Ron Norris似乎想通了并解决了你的问题。无论如何,这是执行不涉及bind事件的事情的另一种方式,它使用所有trace()变量类共有的Tkinter方法({{1 {},BooleanVarDoubleVarIntVardescribed here。调用时收到的参数在this question的答案中解释。

StringVar