나는 linkedlist를 Python으로 구현했으며 모든 노드에 대해 Tkinter 창에 레이블이 필요합니다. 문제는 해당 노드 데이터가 변경 될 때 레이블을 업데이트하는 방법을 모른다는 것입니다.Tkinter 레이블 자체 업데이트
현재 모든 노드와 기본 "데이터 없음"상태의 데이터를 표시하는 창에이 코드가 있습니다. 또한 코멘트에 지적
def interface(self):
Window = Tk()
Row = 0
current_node = self.get_top_of_list()
while current_node is not None:
Label(Window, text = current_node).grid(row = Row, column = 0)
Label(Window, text = current_node.data).grid(row = Row, column = 1)
current_node = current_node.next_node
Row +=1
mainloop()
'Labelv'는'textvariab '과 함께'StringVar'을 사용하면 텍스트가 자동으로 바뀝니다. le ='그리고 당신은'StringVar'에서 텍스트를 변경합니다. 당신은 노드 안의'Label' 또는'StringVar'을 유지할 수 있고 노드의 값을 변경할 때 노드는 그것을 변경할 수 있습니다. Linkedlist는 라벨을 자동으로 업데이트 할 수 없으므로 라벨을위한 기능을 작성해야합니다. – furas
계약자 : [옵저버 패턴] (https://en.wikipedia.org/wiki/Observer_pattern)을 참조하십시오. Node는 "subject"('Observable')이고'Label' 또는'StringVar'는 "observer"('Observer') 일 수 있습니다. – furas
다른 방법은'root.after'를 사용하여 노드에서 모든 데이터를 가져 와서 레이블을 업데이트하는 함수를 실행하는 것입니다. – furas