

Raspberry Pi 3B+上でPython3のプログラムを書いています。  
GUIにはTkinter を使っています。

さて、ウインドウ上のボタンを押すと、ウインドウ全体をプリンタで印刷するプログラムを書きたいと思います。  
すでにCUPSをインストールし、他の標準アプリなどで印刷はできる状態になっています。

プログラムは以下ですが（一部省略）、ボタンを押すとエラーメッセージが出ます。  
どうしたらいいでしょうか。

ソースコード

[code]

    #!/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()
    
[/code]

エラーメッセージ

[code]

    Exception in Tkinter callback
    Traceback (most recent call last):
     File "/usr/lib/python3/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/PIL/Image.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, got 'bytes'
    
[/code]


CC BY-SA 4.0
2020-02-18T02:22:39.947
63138
2020-02-18T02:39:41.977
2020-02-18T02:39:41.977
36119
question
python python3 tkinter 印刷
Tkinterでウインドウを印刷するプログラムについて