我沿着MVC设计模式重构tkinter GUI。 Controller模块导入View类,View类向Controller发出请求。我有几种方法可以将更改注册到条目窗口小部件(StringVar跟踪,绑定等),但是如果窗口小部件是嵌套的并且回调处于更高级别会怎么样?请求向上传播的最佳方法是什么?例如,如果View的Frame具有一个具有更改状态的Widget的Frame,该怎么办?
我遇到的两个解决方案是:
俄罗斯玩偶方法:每个内层都使用对视图或控制器的引用进行实例化,因此小部件可以直接发出请求(例如,向ViewReference.call_controller(输入)或ControllerAlias.request(输入)这会留下从视图到小部件的痕迹痕迹。
家谱方法:递归地打电话给父母并询问他们是否有“要求控制者做事”#34;方法。如果没有,请问他们的父母。这似乎更脆弱和尴尬。