import tkinter
import tkinter.filedialog
import os
from pydoc import text
from PIL import ImageGrab, ImageTk
from time import sleep
from tkinter import *
from tkinter import StringVar, IntVar
from cProfile import label
from distutils import command
class Grab(Canvas):
def __init__(self,master=None):
super().__init__()
self.sel = None
self.master = master
# 定义鼠标当前位置的前一点
self.X = self.Y = -10
self.lastDraw = 1
# 绑定鼠标事件
self.bind('<B1-Motion>', self.move)
self.bind('<Button-1>', self.start)
self.bind('<ButtonRelease-1>', self.end)
self.pack(fill=BOTH, expand=YES)
def start(self, event):
self.X = event.x
self.Y = event.y
# 开始截图
self.sel = True
def move(self, event):
if not self.sel:
return
# 删除刚画完的图形,要不然鼠标移动的时候是黑乎乎的一片矩形
self.delete(self.lastDraw)
self.lastDraw = self.create_rectangle(self.X, self.Y, event.x, event.y, outline='black')
def end(self, event):
self.sel = False
self.delete(self.lastDraw)
sleep(0.1)
# 考虑鼠标左键从右下方按下而从左上方抬起的截图
myleft, myright = sorted([self.X, event.x])
mytop, mybottom = sorted([self.Y, event.y])
self.selectPosition = (myleft, myright, mytop, mybottom)
pic = ImageGrab.grab((myleft + 1, mytop + 1, myright, mybottom))
# 弹出保存截图对话框
fileName = tkinter.filedialog.asksaveasfilename(title='保存截图', filetypes=[('JPG files', '*.jpg')])
if fileName:
pic.save(fileName + '.jpg')
if __name__=="__main__":
root = Tk()
# 窗口大小
root.geometry('1000x500')
photo = ImageTk.PhotoImage(file='C:/Users/13728/Desktop/chenwanyi/photo/微信截图_20220402212828.png'),
label = Label(root, image=photo)
label.pack()
g=Grab(root)
root.mainloop()
在这最后几行添加图片,添加之后鼠标事件就实现不了了,拉取框拉不出来,是哪里出了问题呢?