Программа Tkinter, которая печатает все окно на принтере - PullRequest
0 голосов
/ 18 февраля 2020

Я пишу программу Python3 на Raspberry Pi 3B +. Я использую Tkinter для GUI.

. Теперь я хочу написать программу, которая печатает все окно на принтере, нажимая кнопку в окне. Я уже установил CUP и могу печатать с другими стандартными приложениями.

Программа работает следующим образом, но при нажатии кнопки появляется сообщение об ошибке. Что мне теперь делать?

Сообщение об ошибке:

Exception in Tkinter callback
Traceback (most recent call last):
 File “/usr/lib/python3.y/tkinter/__init__.py”, Line 1705, in __call__
  return self.func(゛args)
 File "/home/pi/Projects/tk.py", line 19, in printer
   img.save(buf, 'PNG’)
 Fi!e "/usr/lib/python3/dist-packages/PlL/lmage・py”, line 1994, in save・
   save_handler(self, fp, filename
  File "/usr/lib/python3/dist-packages/PIL/PngImagePlugin.py" ,line 773, in _save
   fp.write(_MAGIC)
  TypeError: string argument expected, 90t 'bytes'

Исходный код

#!/usr/bin/python3
#-*- coding: utf8 -*-
import tkinter as tk
import sys
import subprocess
from PIL import Image
import io

def printer():
    buf = io.StringIO()
    screen = (500, 500)
    bgcolor = (0x00, 0x00, 0x00)
    img = Image.new('RGB', screen, bgcolor)
    img.save(buf, 'PNG')
    p = subprocess.Popen('lp', stdin=subprocess.PIPE)
    p.communicate(buf.getvalue())
    p.stdin.close()
    buf.close()

root = tk.Tk()
root.attributes('-type','splash')
root.geometry("800x480")
button = tk.Button(root,text="閉じる",command=sys.exit)
button.pack()
button2 = tk.Button(root,text="印刷",command=printer)
button2.pack()
root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...