"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > GUI 애플리케이션의 여러 페이지 간에 변수 데이터를 공유하는 방법은 무엇입니까?

GUI 애플리케이션의 여러 페이지 간에 변수 데이터를 공유하는 방법은 무엇입니까?

2024-11-06에 게시됨
검색:871

How to Share Variable Data Between Different Pages in a GUI Application?

클래스에서 변수 데이터를 가져오는 방법

GUI 프로그래밍의 맥락에서 단일 응용 프로그램 창 내에 여러 페이지를 갖는 것이 일반적입니다. 각 페이지에는 입력 필드, 버튼, 라벨 등 다양한 위젯이 포함될 수 있습니다. 이러한 위젯과 상호작용할 때 사용자는 입력을 제공하거나 여러 페이지에서 공유해야 하는 선택을 합니다. 이는 특히 해당 클래스가 서로 다른 페이지를 나타내는 경우 한 클래스에서 다른 클래스로 변수 데이터에 액세스하는 방법에 대한 의문을 제기합니다.

컨트롤러 활용

효과적인 접근 방식 중 하나는 컨트롤러 클래스 개념을 활용하는 것입니다. . 제공된 코드 조각에는 PageOne 및 PageTwo와 같은 여러 페이지를 관리하는 MyApp 클래스가 있습니다. 일반적으로 컨트롤러는 애플리케이션의 여러 부분 간의 중재자 역할을 하며 통신을 용이하게 합니다. 컨트롤러를 사용하여 변수 데이터를 얻는 방법은 다음과 같습니다.

  1. 각 페이지 클래스에 컨트롤러에 대한 참조를 추가합니다.

    class PageOne(ttk.Frame):
        def __init__(self, parent, controller):
            self.controller = controller
  2. 컨트롤러에서 클래스 이름으로 페이지 인스턴스를 가져오는 메서드를 만듭니다.

    class MyApp(Tk):
        def get_page(self, classname):
            for page in self.frames.values():
                if str(page.__class__.__name__) == classname:
                    return page
  3. 다른 페이지에서 대상 페이지의 공개 멤버에 액세스:

    class PageTwo(ttk.Frame):
        def print_it(self):
            page_one = self.controller.get_page("PageOne")
            value = page_one.some_entry.get()

컨트롤러에 데이터 저장

또는 페이지가 아닌 컨트롤러 자체에 공유 데이터를 저장하는 것을 고려할 수 있습니다. 수업. 이 접근 방식은 페이지를 서로 분리하고 페이지 간의 긴밀한 결합 필요성을 줄입니다. 구현 방법은 다음과 같습니다.

  1. 컨트롤러에 데이터 구조를 생성하여 모든 공유 데이터를 저장합니다.

    class MyApp(Tk):
        def __init__(self):
            self.app_data = {"name": StringVar(),
                             "address": StringVar()}
  2. 위젯을 생성할 때 컨트롤러의 데이터 구조를 참조하도록 각 페이지를 수정합니다.

    class PageOne(ttk.Frame):
        def __init__(self, parent, controller):
            self.controller = controller
            self.some_entry = ttk.Entry(self, textvariable=self.controller.app_data["name"])
  3. 페이지 클래스 대신 컨트롤러에서 공유 데이터에 액세스합니다. :

    class PageTwo(ttk.Frame):
        def print_it(self):
            value = self.controller.app_data["address"].get()

이러한 접근 방식 중 하나를 구현하면 GUI 애플리케이션 내의 다양한 페이지 클래스 간에 변수 데이터를 효과적으로 공유할 수 있습니다. 컨트롤러 기반 접근 방식은 긴밀한 결합과 통신을 위한 중앙 집중식 제어 지점을 제공하는 동시에 컨트롤러에 데이터를 저장하면 분리와 유연성이 향상됩니다. 접근 방식 선택은 애플리케이션의 특정 요구 사항과 페이지 간에 필요한 상호 작용 및 데이터 공유 수준에 따라 달라집니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3