Gtk树存储中的浮点数:小数点/逗号的国际化

0 投票
1 回答
508 浏览
提问于 2025-04-18 11:27

有没有人能告诉我,为什么当我尝试在某一列中添加一个浮点数时,这个例子不工作呢?

它在底部的那行代码中出现了一个类型错误(TypeError: 必须是数字,而不是字符串),具体是这行(self.liststorepath = number)。

这里输入图片描述

编辑:我找到了问题的所在。我的操作系统用逗号(3,2)来显示浮点数的小数部分,但Python是用点(3.2)来表示小数的。有没有简单的办法可以让程序在任意操作系统设置下都能正常工作呢?

    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()

原始例子来自:http://python-gtk-3-tutorial.readthedocs.org/en/latest/cellrenderers.html#cellrenderertext

1 个回答

0

好的,我找到了:

转换小数点符号

使用:

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

或者在我的情况下:

      float(number.replace(',', '.'))

撰写回答