Python - 如何分离程序逻辑和GUI代码?

14
什么是将程序逻辑与GUI代码分离的最佳方法?
我想要使用相同的程序逻辑编写不同的GUI(GTK,KDE,CLI)代码。
我考虑使用不同的Python模块(winecellar-common、winecellar-gtk、winecellar-cli),但不确定如何实现以及是否是最佳方法。
*编辑*
顺便提一下,如何在不同的模块中组织项目文件结构和构建平台才是最佳方法。请记住它主要用于Ubuntu。

想要成为前端不可知论者是一个高尚的目标,但是(1)第二个、第三个... GUI 可能优先级非常低,而且(2)它几乎没有任何好处——如果你选择一个可移植的 GUI 工具包,用另一个工具包重写相同的东西不会增加任何可移植性。 - user395760
2个回答

12

在一个模块中定义您的业务逻辑的函数或类,然后在另一个模块中定义您的演示文稿,使用这些函数来获取您的演示文稿。GUI 模块中应完全使用主模块中的函数和类。对于 CLI 也应该如此。这样,您可以拥有具有不同接口的不同发行版,并且不必为每个发行版创建一个不同的“逻辑”文件。

基本上,您的想法是正确的。只需尽可能将它们保持分离,这样就能够a.) 轻松支持多个接口和b.) 轻松更改接口。


3
附加说明:你希望避免我所谓的“VB程序员”失败,即业务逻辑与GUI控件绑定在一起。请确保几乎所有GUI事件(button.click())都调用实际执行主要工作的对象中的方法。 - asthasr
@syrion 我自己也无法表达得更好。 - Rafe Kettler
只是补充一下我的问题,最好的方法是如何组织项目文件结构和不同模块的构建平台。请记住它主要在Ubuntu上使用。 - Samuel Taylor
@syrion 我不完全确定我是否理解了你的观点。你的意思是GUI不应该做任何“业务逻辑”,而button.click()应该调用逻辑模块中的方法,而不是自己进行一些数据处理?为了保持关注点的分离? - LCsa
1
没错,@LCsa。这是大多数UX模式背后的逻辑。 - asthasr

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接