python - Tkinter listbox that scrolls with arrow keys -
python - Tkinter listbox that scrolls with arrow keys -
i'm trying listbox have first object highlighted (which happens self.e1.select_set(0). trying scroll through listbox highlighting next item downwards when hitting downwards arrow, or select next item hitting arrow. thought binding no luck. ideas?
def body(self, master): self.e1 = tk.listbox(master, selectmode=tk.single, height = 3, exportselection=0) self.e1.insert(tk.end, "1") self.e1.insert(tk.end, "2") self.e1.grid(row=0, column=1) self.e1.select_set(0) self.e1.bind("<down>", self.onentrydown) self.e1.bind("<up>", self.onentryup) def onentrydown(self, event): self.e1.yview_scroll(1, "units") def onentryup(self, event): self.e1.yview_scroll(-1, "units") thanks!
as name says, yview_scroll changes view, not selection.
like select first object select_set(0), can utilize select_set select other objects. maintain reference object selected , utilize select next or previous object upon button press. create sure selection not go below 0 or on size of listbox.
code example:
def body(self, master): self.e1 = tk.listbox(master, selectmode=tk.single, height = 3, exportselection=0) self.e1.insert(tk.end, "1") self.e1.insert(tk.end, "2") self.e1.grid(row=0, column=1) self.selection = 0 self.e1.select_set(self.selection) self.e1.bind("<down>", self.onentrydown) self.e1.bind("<up>", self.onentryup) def onentrydown(self, event): if self.selection < self.e1.size()-1: self.e1.select_clear(self.selection) self.selection += 1 self.e1.select_set(self.selection) def onentryup(self, event): if self.selection > 0: self.e1.select_clear(self.selection) self.selection -= 1 self.e1.select_set(self.selection) python tkinter listbox vertical-scrolling
Comments
Post a Comment