Skip to content

Commit 8bbbb5b

Browse files
committed
use StringVar
By default, Tk treats any value with a leading 0 as an octal number when using DoubleVar.
1 parent 10ff56c commit 8bbbb5b

File tree

3 files changed

+8
-8
lines changed

3 files changed

+8
-8
lines changed

src/navigate/controller/sub_controllers/stage_controller.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ def handler():
398398
to move."""
399399
stage_direction = -1 if self.flip_flags[axis] else 1
400400
try:
401-
temp = position_val.get() + step_val.get() * stage_direction
401+
temp = float(position_val.get()) + step_val.get() * stage_direction
402402
except tk._tkinter.TclError:
403403
return
404404
if self.stage_limits is True:
@@ -407,7 +407,7 @@ def handler():
407407
elif temp < self.position_min[axis]:
408408
temp = self.position_min[axis]
409409
# guarantee stage won't move out of limits
410-
if position_val.get() != temp:
410+
if float(position_val.get()) != temp:
411411
position_val.set(temp)
412412
self.position_callback(axis)()
413413

@@ -439,7 +439,7 @@ def handler():
439439
to move."""
440440
stage_direction = -1 if self.flip_flags[axis] else 1
441441
try:
442-
temp = position_val.get() - step_val.get() * stage_direction
442+
temp = float(position_val.get()) - step_val.get() * stage_direction
443443
except tk._tkinter.TclError:
444444
return
445445
if self.stage_limits is True:
@@ -448,7 +448,7 @@ def handler():
448448
elif temp > self.position_max[axis]:
449449
temp = self.position_max[axis]
450450
# guarantee stage won't move out of limits
451-
if position_val.get() != temp:
451+
if float(position_val.get()) != temp:
452452
position_val.set(temp)
453453
self.position_callback(axis)()
454454

@@ -558,7 +558,7 @@ def handler(*args):
558558
self.view.after_cancel(self.event_id[axis])
559559
# if position is not a number, then do not move stage
560560
try:
561-
position = position_var.get()
561+
position = float(position_var.get())
562562
if self.stage_limits:
563563
widget.trigger_focusout_validation()
564564
# if position is not inside limits do not move stage

src/navigate/view/main_window_content/stage_tab.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,7 @@ def __init__(self, stage_control_tab, *args, **kwargs):
521521
parent=self,
522522
label=entry_labels[i],
523523
input_class=ValidatedEntry,
524-
input_var=tk.DoubleVar(),
524+
input_var=tk.StringVar(),
525525
input_args={
526526
"required": True,
527527
"precision": 0.1,

test/controller/sub_controllers/test_stage_controller.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def test_set_position(stage_controller):
7373
}
7474
stage_controller.set_position(position)
7575
for axis in position.keys():
76-
assert stage_controller.widget_vals[axis].get() == position[axis]
76+
assert float(stage_controller.widget_vals[axis].get()) == position[axis]
7777
assert widgets[axis].widget.trigger_focusout_validation.called
7878
assert stage_controller.stage_setting_dict[axis] == position.get(axis, 0)
7979
stage_controller.show_verbose_info.assert_has_calls([call("Stage position changed"), call("Set stage position")])
@@ -95,7 +95,7 @@ def test_set_position_silent(stage_controller):
9595
}
9696
stage_controller.set_position_silent(position)
9797
for axis in position.keys():
98-
assert stage_controller.widget_vals[axis].get() == position[axis]
98+
assert float(stage_controller.widget_vals[axis].get()) == position[axis]
9999
widgets[axis].widget.trigger_focusout_validation.assert_called_once()
100100
assert stage_controller.stage_setting_dict[axis] == position.get(axis, 0)
101101
stage_controller.show_verbose_info.assert_has_calls([call("Set stage position")])

0 commit comments

Comments
 (0)