import pinPicture from PIL import Image import tkinter as tk import pyautogui import keyboard def capture_screen(): screenshot = pyautogui.screenshot() root = tk.Tk() image = screenshot.convert('RGBA') pin = pinPicture.PinPicture(image, root) root.mainloop() # 监听特定快捷键,这里假设是Ctrl+Alt+S keyboard.add_hotkey('F7', capture_screen) # 保持程序运行,持续监听快捷键 keyboard.wait() # # from tkinter import Tk, Frame, Canvas, Button # from tkinter.colorchooser import askcolor # # # class Application(Frame): # def __init__(self, master=None): # super().__init__(master) # self.master = master # self.pack() # self.createWidget() # self.x = 0 # self.y = 0 # self.lastDraw = 0 # 最后绘制的图形id # self.startDrawFlag = False # self.fgcolor = "red" # # def createWidget(self): # # 创建绘图区 # self.drawPad = Canvas(root, width=900, height=500, bg="black") # self.drawPad.pack() # # # 画图软件的各种按钮 # btn_pen = Button(self, text="画笔", name="pen") # btn_pen.pack(side="left", padx="10") # btn_rect = Button(self, text="矩形", name="rect") # btn_rect.pack(side="left", padx="10") # btn_clear = Button(self, text="清屏", name="clear") # btn_clear.pack(side="left", padx="10") # btn_erasor = Button(self, text="橡皮擦", name="erasor") # btn_erasor.pack(side="left", padx="10") # btn_line = Button(self, text="直线", name="line") # btn_line.pack(side="left", padx="10") # btn_lineArrow = Button(self, text="箭头直线", name="lineArrow") # btn_lineArrow.pack(side="left", padx="10") # btn_color = Button(self, text="颜色", name="color") # btn_color.pack(side="left", padx="10") # # # 为所有button绑定事件 # btn_pen.bind_class("Button", "<1>", self.eventManage) # self.drawPad.bind("", self.stopDraw) # # def stopDraw(self, event): # self.startDrawFlag = False # self.lastDraw = 0 # # def startDraw(self, event): # self.drawPad.delete(self.lastDraw) # if not self.startDrawFlag: # self.startDrawFlag = True # self.x = event.x # self.y = event.y # # def eventManage(self, event): # name = event.widget.winfo_name() # print(name) # if name == "line": # self.drawPad.bind("", self.myline) # elif name == "lineArrow": # self.drawPad.bind("", self.mylineArrow) # elif name == "rect": # self.drawPad.bind("", self.myRect) # elif name == "pen": # self.drawPad.bind("", self.myPen) # elif name == "erasor": # self.drawPad.bind("", self.myErasor) # elif name == "clear": # self.drawPad.delete("all") # elif name == "color": # c = askcolor(color=self.fgcolor, title="选择画笔颜色") # self.fgcolor = c[1] # # def myline(self, event): # self.startDraw(event) # self.lastDraw = self.drawPad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor) # # def mylineArrow(self, event): # self.startDraw(event) # self.lastDraw = self.drawPad.create_line(self.x, self.y, event.x, event.y, arrow=LAST, fill=self.fgcolor) # # def myRect(self, event): # self.startDraw(event) # self.lastDraw = self.drawPad.create_rectangle(self.x, self.y, event.x, event.y, outline=self.fgcolor) # # def myPen(self, event): # self.startDraw(event) # self.drawPad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor) # self.x = event.x # self.y = event.y # # def myErasor(self, event): # self.startDraw(event) # self.drawPad.create_rectangle(event.x - 3, event.y - 3, event.x + 3, event.y + 3, fill="black") # self.x = event.x # self.y = event.y # # # if __name__ == '__main__': # root = Tk() # root.geometry("900x500+200+200") # root.title("画图软件") # app = Application(master=root) # root.mainloop()