美好的一天,
我有一个python应用程序,它生成多个列表框,每个列表框都有自己的数据列表。这些列表框是根据用户生成列表的长度动态创建的。
我有一个按钮,当点击时我想触发一些代码来影响活动列表框(从列表中删除值等)。
因此,我的计划是遍历所有列表框,只有在列表框具有焦点时才进行深入研究。但是,经过2-3个小时的问题和tkinter文件剥离后,我找不到任何方法来确定是否有重点。
提前致谢!
答案 0 :(得分:3)
小部件能够发出<FocusIn>
和<FocusOut>
个事件,因此您可以绑定回调以手动跟踪哪个列表框具有焦点。例如:
from Tkinter import *
class App(Tk):
def __init__(self, *args, **kargs):
Tk.__init__(self, *args, **kargs)
self.focused_box = None
for i in range(4):
box = Listbox(self)
box.pack()
box.insert(END, "box item #1")
box.bind("<FocusIn>", self.box_focused)
box.bind("<FocusOut>", self.box_unfocused)
button = Button(text="add item to list", command=self.add_clicked)
button.pack()
#called when a listbox gains focus
def box_focused(self, event):
self.focused_box = event.widget
#called when a listbox loses focus
def box_unfocused(self, event):
self.focused_box = None
#called when the user clicks the "add item to list" button
def add_clicked(self):
if not self.focused_box: return
self.focused_box.insert(END, "another item")
App().mainloop()
在这里,点击按钮将添加另一个项目&#34;无论哪个列表框都有焦点。