GUI-встраиваемый виджет рисования Python со сглаживанием - PullRequest
4 голосов
/ 22 октября 2010

Я пишу маленькое приложение для рисования диаграмм (аналогично 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 голосов
/ 23 октября 2010

Шуметь с Tkinter + pygame глупо.Я бы использовал wxPython.На самом деле, я создал виджет диаграмм с использованием wxPython, и он имеет сглаживание:

alt text

К сожалению, это было для работы, поэтому я не могу распространять код.

Классы wxPython, которые вы хотите посмотреть для сглаживания: wx.GCDC и / или wx.GraphicsContext.

2 голосов
/ 23 октября 2010

После тщательного поиска я использовал PyQt4 .Он соответствует всем моим требованиям (Python 3, кроссплатформенность, сглаживание), и теперь, когда я прошел основы, он также довольно интуитивен и прост в использовании.на мой собственный вопрос и принимая его для дальнейшего использования.

2 голосов
/ 22 октября 2010

Если вы не против того, как выглядит GTK, у pygtk есть возможность сглаживания в их виджете canvas (см. this ), и многие считают его таким же мощным, как Tkinter, хотя этовходит в стандартную установку Python.

Кроме того, он совместим с Python 3.x, чего нельзя сказать о большинстве нестандартных библиотечных модулей и пакетов.

...