tkinter의 다른 페이지에서 데이터에 액세스할 때 필수입니다. 타겟팅하는 특정 페이지에 대한 참조를 갖습니다. 귀하의 경우 PageTwo는 PageOne에서 self.v 변수를 검색해야 합니다.
Tkinter는 이를 위한 간단한 메커니즘을 제공합니다. 컨트롤러 객체에 대한 액세스를 제공하는 self.controller 속성을 각 페이지의 생성자에 추가합니다. 컨트롤러는 모든 페이지에 대한 참조를 보유하므로 모든 페이지의 참조를 검색할 수 있습니다.
self.controller 속성을 설정하려면 각 페이지의 생성자에 다음 줄을 추가하세요.
self.controller = controller
다음으로 추가 SampleApp 클래스에 대한 get_page 메소드를 사용하여 페이지 참조를 검색합니다.
class SampleApp(tk.Tk): ... def get_page(self, page_class): return self.frames[page_class] ...
이제 모든 페이지 내에서 다른 페이지의 객체에 액세스할 수 있습니다. 컨트롤러의 get_page 메소드를 사용합니다. 예를 들어, PageTwo에서는 다음과 같이 PageOne의 v 변수에 액세스할 수 있습니다.
page1 = self.controller.get_page(PageOne) page1.v.set("Hello, world")
더 세련된 솔루션은 모든 페이지에서 액세스할 수 있는 공유 데이터를 생성하는 것입니다. SampleApp 클래스에서 사전을 초기화하고 컨트롤러를 통해 각 페이지 액세스 권한을 부여합니다.
class SampleApp(tk.Tk): def __init__(self, *args, **kwargs): tk.Tk.__init__(self, *args, **kwargs) self.shared_data = { "username": tk.StringVar(), "password": tk.StringVar(), ... }
그런 다음 페이지는 컨트롤러를 통해 공유 데이터에 액세스할 수 있습니다.
entry1 = tk.Entry(self, textvariable=self.controller.shared_data["username"]) username = self.controller.shared_data["username"].get()
공유 데이터를 활용하면 느슨해짐이 촉진됩니다. 결합하여 다른 페이지에 영향을 주지 않고 페이지 수정을 더 쉽게 만듭니다. 컨트롤러는 중앙 참조 지점 역할을 하여 페이지 간의 종속성을 줄여줍니다.
위 내용은 Tkinter 애플리케이션에서 서로 다른 클래스 간에 데이터를 공유하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!