Skip to content

Commit f96ef5c

Browse files
authored
Fix/combobox enter (issue#41) (#44)
fix (GUI): combobox Enter key submits form after selection
1 parent 5fd99ce commit f96ef5c

3 files changed

Lines changed: 14 additions & 1 deletion

File tree

docs/Changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
* enh: Tk better file dialog
5656
* feat: [Tag.mnemonic][mininterface.Tag.mnemonic]
5757
* feat: config file tuple annotation support
58+
* fix (GUI): combobox Enter key submits form after selection
5859

5960
## 1.0.2 (2025-05-10)
6061
* fix: mute TextInterface on Win

mininterface/_tk_interface/secret_entry.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ def _on_toggle(self, event=None):
2525
"""Handle toggle key event"""
2626
self.toggle_show()
2727
return "break" # Prevent event propagation
28+
2829

2930
def toggle_show(self):
3031
if self.tag.toggle_visibility():

mininterface/_tk_interface/select_input.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,8 @@ def combobox(self):
193193
widget = AutoCombobox(self.frame, textvariable=self.variable)
194194
widget["values"] = [k for k, *_ in options]
195195
widget.pack()
196-
widget.bind("<Return>", lambda _: "break") # override default enter that submits the form
196+
#widget.bind("<Return>", lambda _: "break") # override default enter that submits the form
197+
widget.bind("<Return>", lambda _: self._enter_handler())
197198

198199
self.set_default_label()
199200
self.taking_focus = widget
@@ -212,3 +213,13 @@ def select_on_focus(self, var, val):
212213
# We never want to select the radiobutton in the initial phase
213214
# as this might trigger on_change action (not caused by the user)
214215
var.set(val)
216+
217+
def _enter_handler(self, event=None):
218+
current_value = self.variable.get()
219+
220+
if not current_value:
221+
return "break" # Let it perform the default behavior and open the dropdown
222+
223+
# If it has a value, submit it
224+
self.adaptor._ok()
225+
return "break"

0 commit comments

Comments
 (0)