我有一个Python3.7Tkinter GUI,在这个GUI中,我实现了应用程序主要部分的上下箭头键控件。在它旁边,我有一个列表框,它也控制应用程序,但方式不同,默认情况下,在选择了一个列表框后,列表框选择将使用上下箭头滚动。所以,在我使用了应用程序中的列表框之后,箭头键会在应用程序的主要部分和列表框中触发一个向上箭头事件。这将触发我的应用程序通过在主应用程序中加载新数据来响应列表框选择的更改。这显然是不能接受的。在
如何禁用tkinter的箭头键控制功能
列表框?在
我尝试过将listbox配置为不获取焦点,但这似乎没有禁用该功能。在
编辑:
我通过将列表框的FocusIn事件绑定到一个函数来解决这个问题,该函数可以立即将焦点放在其他东西上。这远不是理想的,因为代码现在的焦点在然后会无缘无故地改变焦点。如果有一种方法可以完全禁用对小部件的关注或禁用列表框键绑定,那么这将是一个首选解决方案。在from tkinter import *
class App:
def __init__(self):
self.root = Tk()
self.dummy_widget = Label()
self.lb = ListBox(master=self.root)
self.lb.bind("", lambda event: self.dummy_widget.focus())
# Additional setup and packing widgets...
if __name__ == '__main__':
mainloop()
这看起来很“老套”,尽管它做得很完美。在