> 백엔드 개발 > 파이썬 튜토리얼 > 다중 페이지 애플리케이션에서 클래스 간에 데이터를 공유하는 방법은 무엇입니까?

다중 페이지 애플리케이션에서 클래스 간에 데이터를 공유하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-02 08:17:29
원래의
342명이 탐색했습니다.

How to Share Data Between Classes in a Multi-Page Application?

다중 페이지 애플리케이션에서 클래스 간 변수 데이터에 액세스하는 방법

각 페이지가 별도의 클래스, 클래스 간 변수 데이터에 액세스하는 것이 어려울 수 있습니다.

컨트롤러 활용

한 가지 접근 방식은 애플리케이션 컨트롤러 클래스를 사용하여 페이지 간 통신을 촉진하는 것입니다. 각 페이지의 생성자에 컨트롤러에 대한 참조를 추가합니다.

<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿