Я разрабатываю Python3 программу на Thonny Python IDE на Raspberry Pi 3B +. Я использую Tkinter для GUI.
Теперь я хочу написать программу, которая печатает все окно на принтере, нажав кнопку в окне. Я был уже успешным на Тонне Python IDE. Но, когда он работает на LXTerminal, после нажатия кнопки появляется сообщение об ошибке. Я хочу, чтобы он работал правильно на LXTerminal.
Программа и сообщение об ошибке следующие. Что мне теперь делать?
Сообщение об ошибке:
giblib error: Saving to file .screenshot2020-0224_16-01-14-611084.png failed
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.7/tkinter/__init__.py", line 1705, in __call__
return self.func(*args)
File "./Projects/tk.py", line 18, in printer
img = pyautogui.screenshot(region=(400,200,800,500))
File "/home/pi/.local/lib/python3.7/site-packages/pyscreeze/__init__.py", line 476, in
_screenshot_linux
im = Image.open(tmpFilename)
File "/usr/lib/python3/dist-packages/PIL/Image.py", line 2634, in open
fp = builtins.open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: '.screenshot2020-0224_16-01-14-611084.png'
код:
#!/usr/bin/python3
#-*- coding: utf8 -*-
import tkinter as tk
import sys
import subprocess
from PIL import Image
import io
import pyautogui
def printer():
buf = io.BytesIO()
img = pyautogui.screenshot(region=(400,200,800,500))
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("400x300")
button = tk.Button(root,text="exit",command=sys.exit)
button.pack()
button2 = tk.Button(root,text="print",command=printer)
button2.pack()
root.mainloop()