Создать график в окне TKinter?

#python #tkinter #pyx

#python #tkinter #pyx

Вопрос:

Я работаю над написанием скрипта, который будет работать с данными и создавать график. Это просто и сделано. К сожалению, модули построения графиков, которые я использую, создают графики только в формате pdf. Однако я хотел бы, чтобы графики отображались в интерактивном окне.

Есть ли у них какой-либо способ добавить график, созданный с помощью PyX, в окно TKinter или загрузить PDF-файл во фрейм или что-то в этом роде?

Ответ №1:

Вам нужно преобразовать вывод PyX в растровое изображение, чтобы включить его в ваше приложение Tkinter. Хотя не существует удобного способа получить вывод PyX в виде изображения PIL напрямую, вы можете использовать метод pipeGS для подготовки растрового изображения и загрузки его с помощью PIL. Вот довольно минимальный пример:

 import tempfile, os

from pyx import *
import Tkinter
import Image, ImageTk

# first we create some pyx graphics
c = canvas.canvas()
c.text(0, 0, "Hello, world!")
c.stroke(path.line(0, 0, 2, 0))

# now we use pipeGS (ghostscript) to create a bitmap graphics
fd, fname = tempfile.mkstemp()
f = os.fdopen(fd, "wb")
f.close()
c.pipeGS(fname, device="pngalpha", resolution=100)
# and load with PIL
i = Image.open(fname)
i.load()
# now we can already remove the temporary file
os.unlink(fname)

# finally we can use this image in Tkinter
root = Tkinter.Tk()
root.geometry('%dx%d' % (i.size[0],i.size[1]))
tkpi = ImageTk.PhotoImage(i)
label_image = Tkinter.Label(root, image=tkpi)
label_image.place(x=0,y=0,width=i.size[0],height=i.size[1])
root.mainloop()