gpt4 book ai didi

python - 我如何使用python在任何窗口上绘制

转载 作者:行者123 更新时间:2023-12-04 01:31:22 29 4
gpt4 key购买 nike

我正在制作一个教程来向其他人解释事情。对于那个教程,我正在尝试制作一个 python 程序(就像绘画应用程序)

我们都在 windows 中使用。可以用钢笔、毛笔作画,也可以画出方形、圆形等形状,并且有一个颜色选择器可以选择颜色来绘制。

我已经尝试使用 from tkinter import choosecolor 在 python 中创建类似绘画的软件。

但是它只在 tkinter Canvas 上绘制。

但我不想在 Canvas 上画画,我想在制作教程时在实时屏幕上画画。

示例图片如下所示

enter image description here

I am trying to make a gui window like this to choose color and pen tool to draw on the screen (eg.desktop,web browser etc).

enter image description here

谁能给我一些关于如何在我的桌面屏幕或任何窗口上绘制这样的建议。

最佳答案

虽然在你的视频中,好像是“直接在屏幕上绘制”。实际上,我认为不是。

有一个简单的“在屏幕上画图”的例子,你可以修改它:

import tkinter as tk
from PIL import ImageGrab,ImageTk
import ctypes

ctypes.windll.shcore.SetProcessDpiAwareness(2) # windows 10

class ToolWin(tk.Toplevel):
def __init__(self):
tk.Toplevel.__init__(self)
self._offsetx = 0
self._offsety = 0
self.wm_attributes('-topmost',1)
self.penSelect = tk.BooleanVar()
self.overrideredirect(1)
self.geometry('200x200')
self.penModeId = None
self.bind('<ButtonPress-1>',self.clickTool)
self.bind('<B1-Motion>',self.moveTool) # bind move event

draw = tk.Checkbutton(self,text="Pen",command=self.penDraw,variable=self.penSelect)
draw.pack()
cancel = tk.Button(self,text="Quit",command=root.destroy)
cancel.pack()

def moveTool(self,event):
self.geometry("200x200+{}+{}".format(self.winfo_pointerx()-self._offsetx,self.winfo_pointery()-self._offsety))

def clickTool(self,event):
self._offsetx = event.x
self._offsety = event.y

def penDraw(self):
if self.penSelect.get():
self.penModeId = root.bind("<B1-Motion>",Draw)
else:
root.unbind('<B1-Motion>',self.penModeId)

def Draw(event):# r = 3
fullCanvas.create_oval(event.x-3,event.y-3,event.x+3,event.y+3,fill="black")

def showTool(): # the small tool window
toolWin = ToolWin()
toolWin.mainloop()

root = tk.Tk()
root.state('zoomed')
root.overrideredirect(1)

fullCanvas = tk.Canvas(root)
background = ImageTk.PhotoImage(ImageGrab.grab(all_screens=True)) # show the background,make it "draw on the screen".
fullCanvas.create_image(0,0,anchor="nw",image=background)
fullCanvas.pack(expand="YES",fill="both")

root.after(100,showTool)

root.mainloop()

此外,您还可以通过拖动来移动工具栏。(PS:我想你快完成了。)

关于python - 我如何使用python在任何窗口上绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60967643/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com