具有抗锯齿功能的GUI嵌入式Python绘图小部件

4
我正在编写一个小型的图形绘制应用程序(类似于Graphviz),需要一个GUI库,使我能够嵌入一个画布,可以绘制抗锯齿线条和文本。我想在窗口的一半中有一个文本编辑器来编辑图表代码,另一半则是(可能是实时的)预览窗格。
目前,我在tkinter窗口中有文本编辑器,在单独的pygame窗口中呈现图表。这在技术上可行,但很混乱(例如有两个事件循环),通常情况下,我更喜欢将两个部分放在一个窗口中。我已经搜索了集成两者的方法,但没有找到任何跨平台的东西,并且pygame明确建议不要尝试这样做。
另一种选择是让pygame将图像导出到文件中,然后再加载到tkinter中,但是tkinter只能读取GIF/PPM格式而没有PIL(我使用的是Python 3,PIL不支持),而pygame无法写入GIF/PPM格式。虽然我可以将其回退到Python 2,因为这是一个小应用程序,但即使如此,为了进行简单的图像转换而拥有一个大型附加库似乎并不正确,而且往返文件可能对于实时预览来说太慢了(更不用说丑陋的界面)。
最后,一个简单的tkinter画布几乎符合我的要求,但它无法绘制反锯齿线条,对于一个主要目的是绘制线条图形的程序来说,这是不可接受的。
我正在使用Python 3,因此优先考虑支持它的库,但如果没有任何方法可以做到这一点,那么Python 2库也可以。该库需要跨平台,并且当然,所需的外部包越少越好。
3个回答

2
经过彻底的搜索,我最终选择了PyQt4。它符合我所有的要求(Python 3、跨平台、抗锯齿),现在我已经掌握了基础知识,它也非常直观和易于使用。
将此作为回答我的问题并接受它以供将来参考。

2
如果你不介意GTK的外观,pygtk在他们的画布小部件中有一个抗锯齿选项(请参见此处),被许多人认为与Tkinter一样强大,尽管它没有包含在标准Python安装中。
此外,它也兼容Python 3.x,而这不能说是大多数非标准库模块和包所具备的。

Python 3 版本有 Windows 二进制文件吗?或者至少有 Py3 兼容的源代码分发包吗?在 PyGTK 网站和仓库中搜索了 20 分钟,没有找到任何结果。 - Max Shawabkeh
不,似乎没有任何 Windows 可执行文件存在。非常抱歉我曾经推荐 pygtk,我不知道它在 Windows 上的支持是如此之差(它在 Linux 和其他类 Unix 上非常流行且易于安装)。有一个与 Py3k 兼容的版本,但似乎很难获取。 - Rafe Kettler
看起来你最好坚持使用Tkinter并使用像PIL这样的扩展(或者如果你很幸运,你可以找到适用于Python 3.x的东西)。可悲的是,在Python宇宙中,更现代的版本很少被使用,因为没有人花时间编写适用于它的软件包。 - Rafe Kettler

2
混合使用Tkinter和pygame是愚蠢的。我会使用wxPython。事实上,我已经使用wxPython制作了一个图形化小部件,并且它具有抗锯齿功能: alt text 不幸的是,这是为工作而做的,所以我不能分发代码。
您要查看用于抗锯齿的wxPython类是wx.GCDC和/或wx.GraphicsContext。

不幸的是,wxPython与Python 3不兼容。它是一个不错的备选方案,但目前我仍然没有失去希望能够找到适用于Python 3的解决方案。事实上,我这个项目的主要目标之一就是评估Python 3的可行性。 - Max Shawabkeh
许多第三方库尚未与Python 3兼容--这应该是您“评估”的一部分。 - FogleBird

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