我使用了一个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)
...
结果:(确定) 如果右键单击然后使用文本输入弹出对话框,则在验证时,相应行的列成功用新值填充。这适用于任何单值元组“标签”。
但是,对于具有多个可编辑列的行,我修改了以前的代码,如下所示:
...
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列值。
这样的事情:
弹出式代码:
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))
答案 0 :(得分:2)
您无法绑定到这样的一组标签。您必须为每个单独的标记创建绑定。