“跟踪”一个tkinter列表框

时间:2015-03-01 17:37:50

标签: python tkinter listbox trace

我在跟踪tkinter中的列表框更改时遇到了一些麻烦。我设法跟踪具有与之关联的变量的小部件,例如缩放,但这不适用于列表框。

我已经尝试将StringVar与它相关联,但这不起作用,因为你无法给出一个"变量=" Listbox小部件的参数。我也试过"命令="争论但它似乎也没有用。

这是我的主要麻烦,虽然它不是我的计划的重要功能。我试图在没有跟踪的情况下实现它,因此在我更改Listbox之后调用我将跟踪调用的函数,但是我无法访问在另一个类中定义的小部件而不是我的那个类。工作。

以下是代码:

class GUI:
    def __init__(self, master):
       ...
       GUI.NetworkLayout = Listbox(master, exportselection=False)
       GUI.NetworkLayout.insert(END, "Ellipse", "Random", "Form 3", "Form 4")
       GUI.NetworkLayout.select_set(0)
       GUI.NetworkLayout.grid(row=2, column=0, padx=5, pady=5)
       ...
class NetworkFrame:
    def __init__(self,master):
       ...
       def update_canvas(*args):
        """
        Redraws the shapes child to the canvas as follows:
            - Adapts them to match the node size slider.
            - Adapts them to match the bond width slider.
            - Adapts them to match the number of people.
        """
        pts = points(720, 320, GUI.NetworkLayout.get())
        NetworkFrame.DisplayFrame.delete("all")

        for i in range(GUI.number_of_people_var.get()-1):
            Link(NetworkFrame.DisplayFrame, pts, i)

        for i in range(GUI.number_of_people_var.get()):
            person_id = Person(NetworkFrame.DisplayFrame, pts, i)
            if i % 2 == 0:
                Person.change_color(person_id, GUI.hex_rumor)
            else:
                pass

如您所见,我尝试通过编写GUI.NetworkLayout来访问GUI.NetworkLayout对象,但是在尝试执行程序时出现此错误 -

AttributeError: type object 'GUI' has no attribute 'NetworkLayout'

谢谢

0 个答案:

没有答案