【问题标题】:Does Python have a cross-platform GUI toolkit that uses native widgets?Python 是否有使用本机小部件的跨平台 GUI 工具包?
【发布时间】:2010-09-15 14:56:34
【问题描述】:

Python 有many GUI toolkits。如果我理解正确的话,这些工具包通常会负责渲染它们自己的小部件(而不是依赖于操作系统)。这实现了跨平台支持,但代价是小部件的外观、感觉和行为不一定与它们的本地对应物完全一样。 Python 是否有一个跨平台的 GUI 工具包并且利用每个系统的原生小部件?

根据GUI Programming in Python,至少有两个候选人:

Lucid

不幸的是,这个库似乎已经消失了。它的链接现在重定向到Icy Labs,这是一家“设计和分销用于电子和机器人开发的组件和设备”的公司(???)。

PySWT

这是用于 Java 的 SWT 库的一个端口(我已经很熟悉了)。这个库感觉不像 Python(例如,它保留了 Java 中常见的 set*get* 方法)。因此,我很想知道是否有更权威的库可以满足我的需求。

【问题讨论】:

    标签: python user-interface cross-platform native


    【解决方案1】:

    wxWidgets 是一个选项吗?据我所知,它可以与操作系统提供的任何功能集成在一起——windows 上的 win32、Linux 上的 gtk,以及我认为 OSX 上的 Aqua。

    【讨论】:

    • 这个库看起来很有前途! One of the first example programs 甚至战胜了a known shortcoming I have with SWT
    • @Adam wx 相当不错,但仍然存在兼容性问题。只要对此进行测试,就应该没有问题。
    • @Dana the Sane:我在哪里可以了解这些兼容性问题?
    • @Adam 我不知道问题目录,我只是在谈论我遇到的问题。
    【解决方案2】:

    Qt 呢?

    它是附带的包装器,PyQt? http://en.wikipedia.org/wiki/PyQt

    Qt 大部分看起来都是原生的。我认为您永远不会找到一个跨平台工具包,它专门使用本机小部件并且仍然是跨平台的。这些目标在某种程度上是相互排斥的。

    【讨论】:

    • Qt 有一个widget gallery,所以提问者可以自己决定 Qt 是否足够原生,我认为确实如此。另外,我会注意到 KDE4 样式不在那里。
    • 感谢您的推荐。我已经了解 Qt,但我一直在寻找更接近原生外观的东西(Qt 应用程序通常对我来说感觉“不同”)。我同意这些目标似乎有些相互排斥,所以我应该澄清我的意思。我是从 SWT 的思维方式思考的,它试图原生渲染所有内容,除非平台没有这样的小部件。在这种情况下,SWT 会重新在该平台上呈现小部件本身。
    • 我刚刚在 Wikipedia 上注意到(最新版本的 Qt 使用不同平台的原生 API 来绘制 Qt 控件,因此不会遇到此类问题)[en.wikipedia.org/wiki/….因此,我错了。我得再看看。
    【解决方案3】:

    pyside qt 的 LGPL 绑定。请注意,还有 PyQt,它是 GPL 或为封闭源使用付费。

    【讨论】:

    • 感谢推荐!但是,我更喜欢真正原生的东西(尽管 Qt 在模仿它方面做出了勇敢的尝试)。 :)
    • 根据维基百科:Qt 曾经模拟其预期平台的本机外观,这偶尔会导致模拟不完善的细微差异。最新版本的 Qt 使用不同平台的原生 API 来绘制 Qt 控件,因此不会遇到此类问题。
    • 感谢您的评论!我也注意到了那个评论。我得再看看 Qt。
    【解决方案4】:

    我最近找到了Toga。认为它是新的,仍然缺少很多原生小部件,但很容易上手。

    【讨论】:

      猜你喜欢
      • 2011-06-30
      • 2010-09-07
      • 2010-10-05
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      相关资源
      最近更新 更多