我正在开发一个在 2 个不同平台上运行的 python 应用程序,即普通桌面 linux 和 Maemo 4。我们在两个平台上都使用 PyGTK,但在 Maemo 上有一些小调整使其看起来不错,实现如下:

if util.platform.MAEMO:
    # do something fancy for maemo
else:
    # regular pygtk

大约有 15 个这样的 if 语句需要让 UI 在 Maemo 4 上看起来和运行良好。

这一直是非常易于管理的。问题是不久前发布了一个新版本的 Maemo(5,又名 fremantle),它与 Maemo 4 相比有一些很大的不同。我不想在整个 GUI 代码中添加一堆检查,以便让所有 3 个平台使用相同的代码库很好地工作,因为这会变得困惑。我也不想为每个平台创建原始 GUI 代码的副本,而只是为特定平台修改它(我想尽可能多地重复使用代码)。

那么,有什么方法可以让基于相同核心 UI 代码的不同平台的 UI 略有不同呢?我不认为这是一个 python 或 Maemo 特定的问题,我只想知道这是如何完成的。

最佳答案

您可以在工厂中完成大部分工作:

def createSpec():
  if util.platform.MAEMO: return Maemo4Spec()
  elif util.platform.MAEMO5: return Maemo5Spec()
  return StandardPyGTKSpec()

然后,在代码早期的某个地方,您只需调用该工厂:
 spec = createSpec()

现在,在其他任何有条件的地方,您只需调用必要的函数:
 spec.drawComboBox()

只要 drawComboBox() 处理特定于平台的任何事情,您就应该处于良好状态。

关于python - 如何处理多个常见的用户界面?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2022448/

10-09 13:27