2015-04-01 27 views
0

我使用Tkinter TreeView,我填充文件中的数据。Tkinter Treeview无法编辑更多的一列

结果是每列有6列预填数值数据。 某些行具有单列值,其他行具有多列填充数据,可由用户编辑(鼠标右键单击)。

对于单个可编辑的列行,我用下面的代码:

... 
self.tree.insert(id2 , 2, text=key2.strip('\r\n'), \ 
    values=("","","10","","",""), \ 
    tags=('','','tag3','','','')) 
    self.tree.tag_bind(('','','tag3','','',''), '<Button-3>', self.popupEntry) 
... 

结果:(OK) 如果点击右键,然后对话框弹出与文本输入,在验证,列他对应的行是,成功填写新值。这适用于任何单个值元组“标签”。

但是,对于更多的是一个可编辑的列行我修改以前的代码如下:

... 
self.tree.insert(id2 , 2, text=key2.strip('\r\n'), \ 
    values=("","","10","","","10"), \ 
    tags=('','','tag3','','','tag6')) 
    self.tree.tag_bind(('','','tag3','','','tag6'), '<Button-3>', self.popupEntry) 
... 

结果:(不正常) 鼠标无反应鼠标右键单击,什么都不会发生

期望的行为: - 对于具有2个或更多可编辑列的行,右键单击以产生具有2个文本条目的对话框,在验证时填充2列值。

类似的东西: enter image description here

弹出代码:

def popupEntry(self, event): 
     result = tkSimpleDialog.askinteger("New value", "Please enter a new numeric value") 
     if result: 
      self.tree.item(self.tree.focus(), values=self.tag_to_val(self.tree.item(self.tree.focus(), 'tags'), result)) 

回答

2

您不能绑定到一组这样的标签。您必须为每个单独的标签创建一个绑定。

+0

感谢布赖恩,我也用这里的答案:[链接](http://stackoverflow.com/questions/29467437/tkinter-parent-to-child-data-exchange)使用子窗口更新这两个值。 – AJN 2015-04-07 07:59:07