【发布时间】:2018-12-24 20:57:33
【问题描述】:
我正在尝试从 Listbox 中选择多个项目,在选择时按 shift 并选择一组项目似乎很直观,但在 Tkinter 中似乎没有内置功能。
所以我尝试自己实现它,方法是注册 shift 键并获取最新的选择。但我在试图找出Listbox 中的最新选择时遇到了困难。 listbox.get(ACTIVE) 似乎落后于我的预期。
这是我迄今为止尝试做的事情,我知道当我知道最新的选择时我需要做更多的事情,但那会在以后出现。
from Tkinter import *
class GUI():
def __init__(self,frame): # Some Init
self.listbox = Listbox(root, height=20, width=51, selectmode=MULTIPLE, exportselection=0, yscrollcommand=yscrollbar.set, xscrollcommand=xscrollbar.set)
# -- Some Grid setup here --
self.listbox.bind("<<ListboxSelect>>", self.selectionCallback)
frame.bind("<Shift_L>", self.shiftCallback)
frame.bind("<KeyRelease-Shift_L>", self.shiftCallback)
def selectionCallback(self,event):
print self.listbox.get(ACTIVE) # This is where im stuck
def shiftCallback(self,event):
if event.type is 2: #KeyPress
self.shift = True
elif event.type is 3: #KeyRelease
self.shift = False
if __name__ == "__main__":
root = Tk()
GUI(root)
【问题讨论】:
-
我认为
selectmode=EXTENDED是你要找的东西 -
谢谢@fhdrsdg 你能把它作为一个答案,以便我可以将其标记为最佳答案吗?
标签: python tkinter listbox selection