Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更新Tkinter中不同位置的图像_Python_Image_Tkinter_Photoimage - Fatal编程技术网

Python 如何更新Tkinter中不同位置的图像

Python 如何更新Tkinter中不同位置的图像,python,image,tkinter,photoimage,Python,Image,Tkinter,Photoimage,我试图使用paste(im,box=(4-tuple))方法更新在Tkinter(python)窗口中创建的标签中显示的图像 下面的代码是一个显示我正在做什么的最小示例。背景是现有图像,遮罩是要粘贴到现有图像上的图像。默认情况下,将在现有图像的左上角更新遮罩 通过将box参数添加到paste方法,我希望将掩码移动到不同的位置。在这个例子中,我尝试了box=(40,40,90,90)作为box参数 from Tkinter import * import Image, ImageTk root

我试图使用
paste(im,box=(4-tuple))
方法更新在Tkinter(python)窗口中创建的
标签中显示的图像

下面的代码是一个显示我正在做什么的最小示例。背景是现有图像,遮罩是要粘贴到现有图像上的图像。默认情况下,将在现有图像的左上角更新遮罩

通过将
box
参数添加到
paste
方法,我希望将掩码移动到不同的位置。在这个例子中,我尝试了
box=(40,40,90,90)
作为
box
参数

from Tkinter import *
import Image, ImageTk

root = Tk()

background_Image = Image.new("RGB",(500,500), (255,0,255,255))
background_Tk = ImageTk.PhotoImage(background_Image)
mask = Image.new('RGBX', (50,50), color=(255,255,255,0))

p1 = Label(root, image=background_Tk)
p1.pack()

background_Tk.paste(mask, box=(40,40,90,90))

root.mainloop()
图像已更新,但不是在我想要的位置。它仍然出现在背景的左上角。在为
box
参数尝试了许多可能的坐标组合之后,我仍然无法更改掩码的位置。在这种情况下,我没有面具出现的确切位置,我只是想移动它,因为我在互联网上找不到一个有效的例子。我想谦虚地问一下
box
参数的正确表达式是什么?你能给我举个有效的例子吗

为方便起见,我将For
粘贴方法复制到此处:

粘贴(即时消息,框=无)

将PIL图像粘贴到照片图像中。请注意,如果显示照片图像,速度可能会非常慢

参数:
im–PIL图像。大小必须与目标区域匹配。如果模式不匹配,图像将转换为位图图像的模式

box–定义左、上、右和下像素坐标的4元组。如果未给出任何图像而不是元组,则假定所有图像


PhotoImage.paste的box参数似乎被完全忽略。 您需要提供完整的图像:

from tkinter import *
from PIL import Image, ImageTk

root = Tk()

background_Image = Image.new("RGB",(500,500), (255,0,255,255))
background_Tk = ImageTk.PhotoImage(background_Image)
mask = Image.new('RGBX', (50,50), color=(255,255,255,0))

p1 = Label(root, image=background_Tk)
p1.pack()

# ...later
background_Image.paste(mask, box=(40,40,90,90))
background_Tk.paste(background_Image)

root.mainloop()
可能是“框”定义了要从中复制而不是复制到中的图像部分。我自己没有使用粘贴功能,但这似乎可以解释您看到的情况。尝试使长方体小于要从中复制的图像,以查看它是否仅复制图像的一个子集。