2014-06-28 96 views
0

有人可以告诉我为什么当我尝试在其中一列中添加浮点数时,此示例不起作用?Gtk Treestore中的浮点数:小数点逗号/点的i18n

它产生一个类型的错误(类型错误:必须是数,而不是str的)在底部(self.liststore path =数)的行。

enter image description here

编辑:我把范围缩小。我的操作系统使用逗号(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

回答

相关问题