如何解决Tkinter:不会在另一个父画布内移动裁剪图像子画布
我的目标是:
- 裁剪图像并存储在子画布中。 (完成)
- 通过鼠标拖动将其移动到父画布周围。 (代码不起作用) 我的代码是
import tkinter as tk
from PIL import Image,ImageTk
class MainWindow:
def __init__(self):
self.mainwindow = tk.Tk()
#self.pack(expand=Y,fill=BOTH)
self.img = Image.open('D:/Desert.jpg')
self.outer_image = ImageTk.PhotoImage(self.img)
self.outer_canvas = tk.Canvas(self.mainwindow,width=600,height=400)
self.outer_canvas.create_image(0,anchor=tk.NW,image = self.outer_image)
self.outer_canvas.pack(fill=tk.BOTH)
self.inner_canvas = tk.Canvas(self.outer_canvas,width=100,height=100)
# Placing inner_canvas inside the outer_canvas to hold crop image from outer canvas
self.outer_canvas.create_window(0,window=self.inner_canvas)
self.crop_image = self.img.crop((300,300,400,400))
self.img = ImageTk.PhotoImage(self.crop_image)
self.inner_canvas.create_image(0,image = self.img)
# Add event to inner_canvas so that it can move around outer canvas
self.inner_canvas.bind('<ButtonPress-1>',self.on_mouse_down_inner_canvas)
self.inner_canvas.bind('<B1-Motion>',self.on_mouse_drag_inner_canvas)
def on_mouse_down_inner_canvas(self,event):
self.lastx = event.x
self.lasty = event.y
def on_mouse_drag_inner_canvas(self,event):
self.outer_canvas.move(tk.CURRENT,event.x - self.lastx,event.y - self.lasty)
self.lastx = event.x
self.lasty = event.y
if __name__ == "__main__":
root = MainWindow()
和GUI了解
有人可以帮助我摆脱这个问题吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。