diff --git a/changes/1821.feature.rst b/changes/1821.feature.rst new file mode 100644 index 0000000000..4d2b7c02ff --- /dev/null +++ b/changes/1821.feature.rst @@ -0,0 +1 @@ +NumberInput now supports changing alignment on GTK. diff --git a/examples/textinput/textinput/app.py b/examples/textinput/textinput/app.py index d9cd39af42..5bca5b7ce0 100644 --- a/examples/textinput/textinput/app.py +++ b/examples/textinput/textinput/app.py @@ -17,6 +17,7 @@ def do_extract_values(self, widget, **kwargs): self.right_aligned_input.enabled = False self.password_input.enabled = False self.number_input.enabled = False + self.right_aligned_number_input.enabled = False # Update the labels with the extracted values self.text_label.text = "Text content: {}; {}".format( @@ -29,11 +30,14 @@ def do_extract_values(self, widget, **kwargs): self.password_input.value, ) - number = self.number_input.value - if number: - self.number_label.text = f"Double the number is: {number * 2}" - else: - self.number_label.text = "You didn't enter a number" + try: + number = self.number_input.value + self.right_aligned_number_input.value + self.number_label.text = ( + f"The sum of {self.number_input.value} and " + f"{self.right_aligned_number_input.value} number is: {number}" + ) + except TypeError: + self.number_label.text = "Please enter a number in each number input." # Wait 5 seconds for i in range(5, 0, -1): @@ -47,6 +51,7 @@ def do_extract_values(self, widget, **kwargs): self.right_aligned_input.enabled = True self.password_input.enabled = True self.number_input.enabled = True + self.right_aligned_number_input.enabled = True def startup(self): # Set up main window @@ -75,6 +80,9 @@ def startup(self): self.right_aligned_input = toga.TextInput( placeholder="Right aligned text", style=Pack(padding=10, text_align=RIGHT) ) + self.right_aligned_number_input = toga.NumberInput( + style=Pack(padding=10, text_align=RIGHT) + ) self.password_input = toga.PasswordInput( placeholder="Password...", style=Pack(padding=10), @@ -110,6 +118,7 @@ def startup(self): self.password_content_label, self.email_input, self.number_input, + self.right_aligned_number_input, self.text_label, self.password_label, self.number_label, diff --git a/gtk/src/toga_gtk/widgets/numberinput.py b/gtk/src/toga_gtk/widgets/numberinput.py index 9b09ce232a..1e1bca4566 100644 --- a/gtk/src/toga_gtk/widgets/numberinput.py +++ b/gtk/src/toga_gtk/widgets/numberinput.py @@ -3,7 +3,7 @@ from travertino.size import at_least -from ..libs import Gtk +from ..libs import Gtk, gtk_alignment from .base import Widget @@ -53,7 +53,8 @@ def set_value(self, value): self.native.set_value(self.interface.value) def set_alignment(self, value): - self.interface.factory.not_implemented("NumberInput.set_alignment()") + xalign, justify = gtk_alignment(value) + self.native.set_alignment(xalign) def set_font(self, font): self.interface.factory.not_implemented("NumberInput.set_font()")