2017-12-22 8 views
0

나는이 Listbox에서 tkinter에 Listbox을 가지고 있습니다. 우리는 이미지를 선택할 수 있습니다. 모든 이미지는 모델의 배열에 있습니다. 그러나 Listbox이 MVC "보기"또는 "컨트롤러"에 해당하는지 알지 못합니다. 컨트롤러 인 경우, 이미지를 추가하는 방법 MVC에 따라 방금 가져 왔습니다.이러한 GUI 요소는 MVC 용어로 무엇을 나타 냅니까?

+0

어떤 차이가 있습니까? – martineau

+0

@martineau 뷰가 단지 컨트롤러의 너비를 업데이트 할 필요가 있고 뷰어처럼 뷰어처럼 업데이트 할 필요가 없다면 MVC를 존중하고 싶습니다 –

+1

'tkinter'가'MVC'를 사용한다고 생각하지 않습니다 - 거기에 모든 것을하는 위젯 일뿐입니다. – furas

답변

1

Listbox 또는 tkinter의 다른 위젯은보기 (명백하게)이지만 컨트롤러에 콜백을 등록 할 때 컨트롤러 역할을한다는 점에서보기의 일부이며 컨트롤러의 일부입니다. 위젯은 관련 사용자 상호 작용 (이벤트)을 포착하고 등록 된 코드로 안내합니다 (tkinter 이벤트 메인 루프의 도움으로).

원하는 경우 별도의 모듈 (모델)에 비즈니스 코드를 입력하고 tkinter 등록 된 콜백이 모델의 함수를 호출하도록하고 모델이 변경되면 해당 모델을 변경합니다. 관찰자 패턴을 사용하여 알림으로 위젯 (보기). here. 본질적으로 모델에 관측자 목록을 유지하면 모델이 변경되면 update() 또는 notify() 메쏘드라고 부릅니다.

많은 작업이 필요하지만 더 많은 작업이 필요하지만 모델 변경이 일부 위젯에 영향을 줄 때마다 UI를 자동으로 업데이트 할 수 있습니다.

좋은 이유가없는 한, 몇 가지 컨트롤을 사용하는 것과 같은 간단한 경우에는 모든 것을 권장하지 않습니다. MVC를 사용하고자하는 것은 우려를 실제로 분리하려는 욕구처럼 보입니다. 그러나 먼저 노력을 평가하십시오.