-
Notifications
You must be signed in to change notification settings - Fork 70
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WListBox item selected? #31
Comments
Never mind. I'm an idiot. I still had a local subclass of WListBox in my code file, but trying to use one in a separate file. |
Hi, could you show your code to handle listbox 'changed' and 'selected' please, I'm also working on this, thank you |
The "click" and "selected" events for seems to not work for WListBox. What event should I grab to have the information that user pressed Enter while browsing the list? |
Same question |
Is this what you are looking for? class WListCheckbox(WListBox):
def __init__(self, w, h, items):
super().__init__(w, h, items)
self.item_selected: List[bool] = [False for _ in items]
self.prefix_selected = "[X] "
self.prefix_unselected = "[ ] "
def handle_key(self, key):
res = super().handle_key(key)
self.choice = self.cur_line
if key == b" ":
self.flip()
self.redraw()
self.signal("changed")
return res
def flip(self):
"""Flip the currently selected choice"""
self.item_selected[self.choice] = not self.item_selected[self.choice]
self.redraw()
self.signal("changed")
def show_line(self, l, i):
is_selected = self.item_selected[i]
# highlight current line
hlite = self.cur_line == i
if hlite:
if self.focus:
self.attr_color(C_B_WHITE, C_GREEN)
else:
self.attr_color(C_BLACK, C_GREEN)
# differentiate between selected and unselected lines
if i != -1:
prefix = self.prefix_selected if is_selected else self.prefix_unselected
l = prefix + l
l = self.render_line(l)[: self.width]
if is_selected and not hlite:
self.attr_color(C_YELLOW)
self.wr(l)
self.attr_reset()
self.clear_num_pos(self.width - len(l))
if hlite:
self.attr_reset()
def handle_mouse(self, x, y):
res = super().handle_mouse(x, y)
self.choice = self.cur_line
self.flip()
self.redraw()
self.signal("changed")
return res When you either click on an item or you're pressing space while having it selected it gets selected. You can find all the selected item indices by querying the instance |
I'm trying to make a simple file chooser dialog using a listbox. I can catch the changed event and get the text of the highlighted item just fine, but how would I know if the user "selected" that item by pressing the enter key?
The text was updated successfully, but these errors were encountered: