문제:
Tkinter를 사용하는 다중 페이지 애플리케이션에서 어떻게 한 페이지의 클래스가 다른 페이지의 클래스에 저장된 변수 데이터에 액세스할 수 있습니까?
컨트롤러 활용:
이미 컨트롤러를 활용하고 있다고 가정하면 페이지 간 통신에 이를 활용할 수 있습니다.
각 페이지에 컨트롤러에 대한 참조를 저장합니다.
<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>
클래스 이름을 기반으로 페이지를 검색하는 컨트롤러:
<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>
데이터에 액세스해야 하는 페이지에서 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>
컨트롤러에 데이터 저장:
페이지 간의 결합을 줄이려면 공유 데이터를 컨트롤러에 저장하는 것이 좋습니다.
변수를 저장할 컨트롤러에 데이터 구조 생성:
<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>
위 내용은 Tkinter 다중 페이지 애플리케이션에서 페이지 간에 데이터를 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!