다중 페이지 애플리케이션에서 클래스 간 변수 데이터에 액세스하는 방법
각 페이지가 별도의 클래스, 클래스 간 변수 데이터에 액세스하는 것이 어려울 수 있습니다.
컨트롤러 활용
한 가지 접근 방식은 애플리케이션 컨트롤러 클래스를 사용하여 페이지 간 통신을 촉진하는 것입니다. 각 페이지의 생성자에 컨트롤러에 대한 참조를 추가합니다.
<code class="python">class PageOne(ttk.Frame): def __init__(self, parent, controller): self.controller = controller ...</code>
다음으로 클래스 이름이 지정된 페이지 인스턴스를 검색하는 컨트롤러에 메서드를 추가합니다.
<code class="python">class MyApp(Tk): ... def get_page(self, classname): for page in self.frames.values(): if str(page.__class__.__name__) == classname: return page return None</code>
그런 다음 한 페이지 내에서 다른 페이지의 변수 데이터에 액세스할 수 있습니다.
<code class="python">class PageTwo(ttk.Frame): ... def print_it(self): page_one = self.controller.get_page("PageOne") value = page_one.some_entry.get() print ('The value stored in StartPage some_entry = %s' % value)</code>
컨트롤러에 데이터 저장
페이지 간의 긴밀한 결합을 방지하려면 특정 페이지가 아닌 컨트롤러:
<code class="python">class MyApp(Tk): def __init__(self): ... self.app_data = {"name": StringVar(), "address": StringVar(), ... }</code>
그런 다음 각 페이지 내에서 위젯을 생성할 때 컨트롤러의 데이터 구조를 참조합니다.
<code class="python">class PageOne(ttk.Frame): def __init__(self, parent, controller): self.controller=controller ... self.some_entry = ttk.Entry(self, textvariable=self.controller.app_data["name"], ...) </code>
마지막으로 컨트롤러의 데이터에 직접 액세스합니다.
<code class="python"> def print_it(self): value = self.controller.app_data["address"].get() ...</code>
위 내용은 다중 페이지 애플리케이션에서 클래스 간에 데이터를 공유하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!