New submission from Till Korten <webmas...@korten.at>:

This issue occurs when a locale is set that uses comma as decimal separator 
(e.g. locale.setlocale(locale.LC_NUMERIC, 'de_DE.utf8')).
I have a tkinter.Spinbox with increment=0.1 connected to a tkinter.DoubleVar.
When I change the value of the Spinbox using the arrow buttons and subsequently 
try to read out the variable with tkinter.DoubleVar.get(), my code throws the 
follwoing error:
_tkinter.TclError: expected floating-point number but got "0,1".

Here is a minimal code example:

-------------
import tkinter
import locale

locale.setlocale(locale.LC_NUMERIC, 'de_DE.utf8')


class TestDoubleVar():
    def __init__(self):
        root = tkinter.Tk()
        self.var = tkinter.DoubleVar()
        self.var.set(0.8)
        number = tkinter.Spinbox(
            root,
            from_=0, to=1, increment=0.1,
            textvariable=self.var,
            command=self.update,
            width=4
        )
        number.pack(side=tkinter.LEFT)
        root.mainloop()

    def update(self, *args):
        print(float(self.var.get()))


if __name__ == '__main__':
    TestDoubleVar()

-------

Actual result: the code throws an error

Expected result: the code should print the values of the DoubleVar even with a 
locale set that uses comma as the decimal separator.

n.b. the problem also occurs with tkinter.Scale

----------
components: Tkinter
files: test_doublevar.py
messages: 363184
nosy: thawn
priority: normal
severity: normal
status: open
title: setting a locale that uses comma as decimal separator breaks 
tkinter.DoubleVar
type: behavior
versions: Python 3.7
Added file: https://bugs.python.org/file48943/test_doublevar.py

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue39827>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to