0

Can anybody tell me why this example doesn't work when I try to add a float in one of the columns?

It produces a type error (TypeError: Must be number, not str) in the line at the bottom (self.liststorepath = number).

enter image description here

Edit: I narrowed it down. My operating system displays the float with a comma (3,2) for the decimals, but python uses a dot (3.2) for decimals. Is there an easy solution within the code, that allows the program to work on either operating system setting?

    from gi.repository import Gtk

    class CellRendererTextWindow(Gtk.Window):

        def __init__(self):
            Gtk.Window.__init__(self, title="CellRendererText Example")

            self.set_default_size(200, 200)

            self.liststore = Gtk.ListStore(str, float)
            self.liststore.append(["Measurement 1", 3.2])
            self.liststore.append(["Measurement 2", 2.0])
            self.liststore.append(["Measurement 3", 4.75])

            treeview = Gtk.TreeView(model=self.liststore)

            renderer_text = Gtk.CellRendererText()
            column_text = Gtk.TreeViewColumn("Text", renderer_text, text=0)
            treeview.append_column(column_text)

            floatrenderer = Gtk.CellRendererText()
            floatrenderer.set_property("editable", True)

            column_editabletext = Gtk.TreeViewColumn("Value",
                floatrenderer, text=1)
            treeview.append_column(column_editabletext)

            floatrenderer.connect("edited", self.text_edited)

            self.add(treeview)

        def text_edited(self, widget, path, number):
            self.liststore[path][1] = number

    win = CellRendererTextWindow()
    win.connect("delete-event", Gtk.main_quit)
    win.show_all()
    Gtk.main()

Original example from: http://python-gtk-3-tutorial.readthedocs.org/en/latest/cellrenderers.html#cellrenderertext

tobias47n9e
  • 2,233
  • 3
  • 28
  • 54

1 Answers1

0

Ok found it:

convert decimal mark

use:

      float("2,5".replace(',', '.'))

or in my case:

      float(number.replace(',', '.'))
Community
  • 1
  • 1
tobias47n9e
  • 2,233
  • 3
  • 28
  • 54