我在跟踪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'
谢谢