Печать вывода Python Tkinter - PullRequest
5 голосов
/ 01 июня 2010

Я пытаюсь напечатать содержимое python tkinter canvas. Я попытался использовать метод postscript для создания файла постскриптума, но я получил пустую страницу. Я знаю, что это потому, что у меня есть встроенные виджеты, и они не обрабатываются методом postscript.

Прежде чем переписать свою программу для создания более удобного для печати макета, кто-нибудь может предложить способ решения этой проблемы? Все книги по программированию, которые я когда-либо читал, подходят к проблеме отправки вывода на принтер с небольшим ручным махом, что-то вроде: «Это сложная проблема, которая зависит от взаимодействия с операционной системой». Мне также трудно найти ресурсы об этом из-за всех страниц, связанных с печатью на экран.

Я использую Python 2.6 в Ubuntu 9.04.

Ответы [ 3 ]

1 голос
/ 21 августа 2012

Оказывается, вам нужно обновить холст перед экспортом постскриптума. Вот так:

from Tkinter import * 

root = Tk() 
canvas = Canvas(bg='white', width = 200, height = 200) 
canvas.pack() 

canvas.create_line(0, 0, 199, 199, fill="blue", width = 5) 
canvas.create_line(0, 199, 199, 0, fill="blue", width = 5) 

canvas.update() 
canvas.postscript(file = "x.ps") 

root.mainloop() 

Спасибо Рио здесь за решение.

0 голосов
/ 09 июля 2010

Я думаю, что вы бьетесь до пределов Ткинтера. Если не для виджетов, другой метод состоит в том, чтобы нарисовать одно и то же изображение на объекте рисования изображения PIL, так как оба имеют похожие API.

Хакерский обходной путь заключается в том, чтобы программно сделать снимок экрана области окна, которую вы хотите, используя ImageGrab в PIL.

wxPython - достойная альтернатива. Лично я предпочитаю Qt, он, безусловно, имеет отличную поддержку принтера. Кроме того, платформа Graphics View является выдающейся.

0 голосов
/ 01 июня 2010

Ну, это сложная проблема, которая зависит от взаимодействия с операционной системой.(Извините, не смог устоять!)

Решение «холст к постскриптуму» работает только для объектов, нарисованных на холсте - оно не обрабатывает встроенные окна.Есть библиотеки, которые могут конвертировать холст в PDF, но у меня нет опыта работы с ними, и я не знаю, обрабатывают ли они встроенные окна или нет (наверное, нет).

Существует pdflib, которая является коммерческой библиотекой C, которая может быть интегрирована с python и tcl (и, следовательно, Tkinter).У меня нет опыта работы с библиотекой, и я предполагаю, что она, вероятно, также не поддерживает встроенные окна.Я думаю, что это более примитивно - давать вам команды для создания страниц, верхних и нижних колонтитулов и т. Д.

Это определенно проблема с Tk;всегда есть, вероятно, всегда будет, так как, кажется, нет большого спроса или интереса кого-либо для решения проблемы кросс-платформенным способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...