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

Tkinter 다중 페이지 애플리케이션에서 페이지 간에 데이터를 전달하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-02 09:12:02155검색

How to Pass Data Between Pages in a Tkinter Multi-Page Application?

클래스에서 변수 데이터에 액세스하는 방법

문제:

Tkinter를 사용하는 다중 페이지 애플리케이션에서 어떻게 한 페이지의 클래스가 다른 페이지의 클래스에 저장된 변수 데이터에 액세스할 수 있습니까?

컨트롤러 활용:

이미 컨트롤러를 활용하고 있다고 가정하면 페이지 간 통신에 이를 활용할 수 있습니다.

  1. 각 페이지에 컨트롤러에 대한 참조를 저장합니다.

    <code class="python">class PageOne(ttk.Frame):
     def __init__(self, parent, controller):
         self.controller = controller
         ...
    
    class PageTwo(ttk.Frame):
     def __init__(self, parent, controller):
         self.controller = controller
         ...</code>
  2. 클래스 이름을 기반으로 페이지를 검색하는 컨트롤러:

    <code class="python">class MyApp(Tk):
     def get_page(self, classname):
         '''Returns an instance of a page given it's class name as a string'''
         for page in self.frames.values():
             if str(page.__class__.__name__) == classname:
                 return page
         return None</code>
  3. 데이터에 액세스해야 하는 페이지에서 get_page 메서드를 사용합니다.

    <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>

컨트롤러에 데이터 저장:

페이지 간의 결합을 줄이려면 공유 데이터를 컨트롤러에 저장하는 것이 좋습니다.

  1. 변수를 저장할 컨트롤러에 데이터 구조 생성:

    <code class="python">class MyApp(Tk):
     def __init__(self):
         ...
         self.app_data = {"name":    StringVar(),
                          "address": StringVar(),
                          ...
                         }</code>
  2. 컨트롤러의 데이터를 참조하도록 페이지 업데이트:

    <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>
  3. 컨트롤러에서 데이터에 액세스:

    <code class="python"> def print_it(self):
         value = self.controller.app_data["address"].get()
         ...</code>

위 내용은 Tkinter 다중 페이지 애플리케이션에서 페이지 간에 데이터를 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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