Python Можно ли печатать на принтере с помощью Tkinter - PullRequest
0 голосов
/ 04 апреля 2020

Я делаю блокнот с помощью Tkinter, и я хочу иметь возможность печатать на принтере сделанные заметки. Я использую объект Text, чтобы позволить пользователю писать свои заметки. Как печатать на принтере с помощью Tkinter, и я хочу избежать использования PyQT или win32api, которые, как я знаю, имеют поддержку принтеров (из-за сложности и отсутствия опыта). Я планирую выпускать приложение только на windows, поэтому мне оно не нужно быть кроссплатформенным.

1 Ответ

0 голосов
/ 04 апреля 2020

Факт для принятия: кросс-платформенная печать сложна.

В зависимости от системы, которую вы используете, команды для отправки текста / файлов на принтер будут очень разными.

Для Windows, вам, вероятно, следует использовать модуль Python win32print, даже если вы говорите, что не хотите его использовать из-за сложности и т. Д. c. Честно говоря, я думаю, что попытка решить ее любым другим способом в конечном итоге будет намного сложнее.

Для Linux, Ма c, Unix, вы можете отправлять команды намного более напрямую, используя LPR. к системному принтеру через встроенный os.popen() или новый subprocess модуль в Python, но для Windows я уверен, что вам лучше использовать модуль win32print.

Предоставление Функциональность кросс-платформенной печати всегда будет проблемой из-за различий в базовых подсистемах в разных операционных системах.

Базовый c подход

Вам потребуется отделить logi c вашего кода, так что в зависимости от операционной системы ваша программа выберет правильный метод для выполнения необходимых вам функций печати. Я не знаю, как обойти это.

Использование Python модулей win32 не должно быть таким сложным, как вы думаете.

Для Windows

Это можно сделать с помощью модуля win32print, Здесь хорошо документировано

Для Linux, macOS, Unix

Проверьте использование LPR команды , и объедините это с основными c Python os.popen вызовами или с использованием нового Python subprocess модуля

Я знаю, что вы, вероятно, хотели больше «копировать / вставлять дружественный» способ, но это было бы очень сложно без остальной части вашего кода и без знания точных требований / спецификаций для вашего приложения.

Суть в том, что вы, вероятно, в конечном итоге напишите пользовательский код для каждой платформы для печати в любом случае, так что, возможно, лучше прыгнуть в голову первым.

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