无法同时更改所有treeview表中的参数-python

无法同时更改所有treeview表中的参数-python,python,python-2.7,tkinter,treeview,ttk,Python,Python 2.7,Tkinter,Treeview,Ttk,我有几张树景台 过了一会儿,我需要对所有表应用一些属性。 所有表格都合并在字典中,例如: all_trees = {1: some_tree, 2: one_more_tree, 3: another_tree} 当出现这种情况时,我需要执行这种类型的操作来更改所有表中的一个属性: for key in all_trees.keys(): tree = all_trees[key] tree.bind("<Button-3>", lambda e

我有几张树景台

过了一会儿,我需要对所有表应用一些属性。 所有表格都合并在字典中,例如:

all_trees = {1: some_tree, 2: one_more_tree, 3: another_tree}
当出现这种情况时,我需要执行这种类型的操作来更改所有表中的一个属性:

for key in all_trees.keys():
    tree = all_trees[key]
    tree.bind("<Button-3>", lambda event: new_property(event, tree))
用于所有树中的键。键():
树=所有树[关键点]
tree.bind(“,lambda事件:新的_属性(事件,树))
新属性使鼠标右键单击表中的行后出现文本“hello”。 执行此操作后,只有最后一个表具有新属性

有什么问题吗?为什么不将此属性应用于所有表? 附言:我需要使用python2.7制作我的项目,所以我所有的代码都是使用旧版本的python编写的

以下是完整的代码:

import Tkinter as tk
from ttk import Treeview, Frame
from Tkinter import Menu, LEFT, NO, YES


data_for_tables = {1: 'one', 2: 'two', 3: 'three'} 
list_of_tables = [1, 2, 3]

root = tk.Tk()
frame = tk.Frame(root)
frame.pack()

def make_tree(frame):
    """creating Treeview table"""

    tree = Treeview(frame)
    tree["columns"] = ("one", "two", "three")
    tree.heading("#0", text="")
    tree.column("#0", minwidth=0, width=5, stretch=NO)
    tree.heading("one", text="Port")
    tree.column("one", minwidth=0, width=30, stretch=NO)
    tree.column("two", minwidth=0, width=60, stretch=NO)
    tree.heading("three", text="State")
    tree.column("three", minwidth=0, width=60, stretch=YES)
    tree['height'] = 3
    tree.pack(side=LEFT)
    return tree

def insert_value(info, tree):
    """Inserting values to Treeview table"""

    for key in info.keys():
        tree.insert("", "end", values=(str(key), info[key], "<><><>"))

def new_property(event, tree):
    """after right ckick mouse appears text 'hello' in console"""

    row_id = tree.identify_row(event.y)
    if row_id:
        print('hello')


global all_trees
for num in list_of_tables:
    all_trees = {num: make_tree(frame)}
    for key in all_trees.keys():
        tree = all_trees[key]
        insert_value(data_for_tables, tree)

for key in all_trees.keys():
    tree = all_trees[key]
    tree.bind("<Button-3>", lambda event: new_property(event, tree))

root.mainloop()
将Tkinter作为tk导入
从ttk导入树视图,帧
从Tkinter导入菜单,左侧,否,是
_表的数据_={1:'1',2:'2',3:'3'}
表的列表=[1,2,3]
root=tk.tk()
frame=tk.frame(根)
frame.pack()
def生成树(框架):
“”“正在创建树视图表”“”
树=树视图(框架)
树[“列]=(“一”、“二”、“三”)
树标题(“#0”,text=”“)
tree.column(“#0”,minwidth=0,width=5,stretch=NO)
树标题(“一”,text=“端口”)
tree.column(“一”,minwidth=0,width=30,stretch=NO)
tree.column(“两个”,minwidth=0,width=60,stretch=NO)
树标题(“三”,text=“State”)
tree.column(“三”,minwidth=0,width=60,stretch=YES)
树['height']=3
树形包装(侧面=左侧)
回归树
def insert_值(信息,树):
“”“将值插入树视图表”“”
对于输入信息。键():
插入(“,”结束“,值=(str(键),info[键],“”)
def新_属性(事件、树):
“”“在控制台中出现鼠标右键文本“hello”后”“”
行id=树。标识行(event.y)
如果行id为:
打印('你好')
全球所有树
对于\u表的列表\u中的num:
所有_树={num:make_树(框架)}
对于所有树中的键。键():
树=所有树[关键点]
插入值(表、树的数据)
对于所有树中的键。键():
树=所有树[关键点]
tree.bind(“,lambda事件:新的_属性(事件,树))
root.mainloop()

您的代码中几乎没有问题:


global all_trees#在执行
tree=all_trees.keys()
之后,您是否检查了
tree
以确定它是否是您所认为的?我猜这不是你所想的。第二次发布的代码与完整代码中的代码不匹配。