使用 ImageGrab.grab() 时发生奇怪的事情
Weird things happening when using ImageGrab.grab()
我有一些代码:
from tkinter import *
from tkinter import *
from PIL import Image, ImageGrab
root = Tk()
def capture():
x0 = canvas.winfo_rootx()
y0 = canvas.winfo_rooty()
x1 = x0 + canvas.winfo_width()
y1 = y0 + canvas.winfo_height()
im = ImageGrab.grab((x0, y0, x1, x2))
im.save('mypic.png') # Can also say im.show() to display it
canvas = Canvas(root, bg='red')
canvas.pack(padx=10, pady=10)
e = Entry(root)
canvas.create_window(canvas.canvasx(100), canvas.canvasy(100), window=e)
Button(root, text='Click a pic', command=capture).pack()
root.mainloop()
它使 mypic:
这是我背景的一部分
但我想让它成为:
这是我的屏幕截图。
我尝试更改其他参数,例如 include_layeder_windows
,但没有任何改变。
我的问题是 grab() returns 我的背景而不是我的屏幕。
您似乎在使用 Mac OS。在Mac中,默认情况下一个应用程序不能抓取其他应用程序window的内容。尝试这样做时,它只会抓取桌面背景。这也许可以观察到,例如共享屏幕时,例如缩放,没有给缩放适当的权限。
要解决此问题,您需要转到“系统偏好设置”>“隐私”>“隐私”>“屏幕录制”并在其中添加您的应用程序。
我有一些代码:
from tkinter import *
from tkinter import *
from PIL import Image, ImageGrab
root = Tk()
def capture():
x0 = canvas.winfo_rootx()
y0 = canvas.winfo_rooty()
x1 = x0 + canvas.winfo_width()
y1 = y0 + canvas.winfo_height()
im = ImageGrab.grab((x0, y0, x1, x2))
im.save('mypic.png') # Can also say im.show() to display it
canvas = Canvas(root, bg='red')
canvas.pack(padx=10, pady=10)
e = Entry(root)
canvas.create_window(canvas.canvasx(100), canvas.canvasy(100), window=e)
Button(root, text='Click a pic', command=capture).pack()
root.mainloop()
它使 mypic:
这是我背景的一部分
但我想让它成为:
这是我的屏幕截图。
我尝试更改其他参数,例如 include_layeder_windows
,但没有任何改变。
我的问题是 grab() returns 我的背景而不是我的屏幕。
您似乎在使用 Mac OS。在Mac中,默认情况下一个应用程序不能抓取其他应用程序window的内容。尝试这样做时,它只会抓取桌面背景。这也许可以观察到,例如共享屏幕时,例如缩放,没有给缩放适当的权限。
要解决此问题,您需要转到“系统偏好设置”>“隐私”>“隐私”>“屏幕录制”并在其中添加您的应用程序。