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