我有一个主课叫
应用程序
它调用4个控制器。方法
从home_page()开始
创建类型为的对象
主页
我希望这个对象能够访问所有4个控制器,我将把它们作为参数传递。方法如下:
def start_from_home_page(self, fileSystemController, widgetController, logicController):
from pages.HomePage import HomePage
self.homePage = HomePage(self, fileSystemController, widgetController, logicController)
self.homePage.grid(row = 0, column = 0, sticky = 'nsew')
self.homePage.tkraise()
这是
“应用程序”
班
class App(ctk.CTk):
def __init__(self, title, dim):
super().__init__()
self.title(title)
self.geometry(f'{dim[0]}x{dim[1]}')
self.minsize(dim[0],dim[1])
os.chdir('/Users/mauri5566/Desktop/AST-CVE')
self.widgetController = WidgetController(self)
self.fileSystemController = FileSystemController(self)
self.logicController = LogicController(self)
self.navigationController = NavigationController(self)
self.navigationController.start_from_home_page(self.fileSystemController, self.widgetController, self.logicController)
self.mainloop()
App('AST-CVE', (1000,800))
下面的代码显示了HomePage类的初始部分(它继承自ctk.CTkFrame)。我得到了以下错误:
bad screen distance ".!filesystemcontroller"
这是因为第三个参数应该是框架的宽度。然而,我不需要这样做,我只想让类通过将它们作为参数传递来访问控制器,我该怎么做?
这是
主页
类别:
class HomePage(ctk.CTkFrame):
def __init__(self, navigationController: NavigationController,
fileSystemController: FileSystemController,
widgetController: WidgetController,
logicController: LogicController):
super().__init__(navigationController, fileSystemController, widgetController, logicController)
为了清楚起见,这就是ctk的方式。CTkFrame对象的结构如下:
class CTkFrame(CTkBaseClass):
def __init__(self,
master: Any,
width: int = 200,
height: int = 200,
corner_radius: Optional[Union[int, str]] = None,
border_width: Optional[Union[int, str]] = None,
bg_color: Union[str, Tuple[str, str]] = "transparent",
fg_color: Optional[Union[str, Tuple[str, str]]] = None,
border_color: Optional[Union[str, Tuple[str, str]]] = None,
background_corner_colors: Union[Tuple[Union[str, Tuple[str, str]]], None] = None,
overwrite_preferred_drawing_method: Union[str, None] = None,
**kwargs):