Python有一款跨平台GUI工具包,它使用本地小部件吗?

5

Python有许多GUI工具包。如果我理解正确,这些工具包通常承担渲染其自己的小部件的责任(而不是依赖于操作系统)。这实现了跨平台支持,代价是小部件不一定看起来、感觉和行为完全像本机对应物。Python是否有一个既跨平台又利用每个系统的本地小部件的GUI工具包?

根据Python中的GUI编程,至少有两个候选:

Lucid

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

PySWT

这是Java的SWT库的移植版(我已经熟悉了它)。这个库不像Python(例如,它保留了在Java中常见的set*和get*方法),所以我很想知道是否有更权威的库满足我的需求。
4个回答

5

wxWidgets是一个选择吗?据我所知,它可以集成操作系统所提供的任何内容 - 在Windows上使用Win32,在Linux上使用GTK,在OSX上使用Aqua。


这个库看起来非常有前途!第一个示例程序甚至克服了我在 SWT 中遇到的已知缺陷! - Adam Paynter
@Adam wx还不错,但仍存在兼容性问题。只要有相应的测试,就不应该出现问题。 - Dana the Sane
@Dana the Sane:我在哪里可以学习有关这些兼容性问题的知识? - Adam Paynter
@Adam 我不知道有一个问题目录,我只是在谈论我遇到的那些问题。 - Dana the Sane

4

Qt是什么?

还有它的附属包装器,PyQt? http://en.wikipedia.org/wiki/PyQt

Qt在大多数情况下看起来很原生。我不认为你会发现一个完全使用本地小部件并且仍然跨平台的跨平台工具包。这些目标在某种程度上是相互矛盾的。


1
Qt有一个widget gallery,所以提问者可以自行决定Qt是否看起来足够本地化,我认为它是的。另外,我要注意一下KDE4风格没有在那里。 - jonescb
感谢您的推荐。我已经了解了Qt,但我正在寻找更接近本机外观和感觉的东西(对我来说,Qt应用程序通常感觉“不同”)。我同意目标似乎有些相互矛盾,所以我应该澄清我的意思。我是从SWT的心态出发考虑的,它试图在本地渲染一切,除非平台上没有这样的小部件。在这种情况下,SWT会在该平台上自行渲染小部件。 - Adam Paynter
我刚在维基百科上注意到,(Qt的最新版本使用不同平台的本地API来绘制Qt控件,因此不会遇到这些问题)[http://en.wikipedia.org/wiki/Qt_(framework)#Use_of_native_UI-rendering_APIs]。因此,我的看法是错误的。我需要再仔细研究一下。 - Adam Paynter

3

pyside是Qt的LGPL绑定库。需要注意的是,还有一个PyQt,它是GPL或付费的闭源使用。


谢谢您的推荐!不过,我更喜欢真正本地的东西(尽管Qt试图模拟它)。 :) - Adam Paynter
根据维基百科:Qt 曾经模拟其目标平台的本地外观,这偶尔会导致模拟不完美的轻微差异。最新版本的 Qt 使用不同平台的本地 API 来绘制 Qt 控件,因此不会遇到这些问题。 - stonemetal
谢谢你的评论!我也注意到了那个评论。我得再看看Qt。 - Adam Paynter

0

我最近发现了Toga。我觉得它很新,还缺少很多原生小部件,但是很容易上手。


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