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

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

Barbara Streisand
Barbara Streisand원래의
2024-11-02 08:17:29251검색

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.