屏幕尺子

本文介绍三款用于测量屏幕尺寸及角度的工具:PicPick、MB-Ruler 和 ScreenRuler。这些工具不仅支持测量水平和垂直长度,还支持任意方向的长度及角度测量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

### Python 实现屏幕尺子程序 为了实现一个简单的屏幕尺子程序,可以采用 `tkinter` 和 `Pillow` 库来捕捉屏幕区域,并通过鼠标事件测量两个点间的距离。下面是一个完整的例子: ```python import tkinter as tk from PIL import ImageGrab, ImageTk import math class ScreenRuler(tk.Tk): def __init__(self): super().__init__() self.title("Screen Ruler") self.geometry('800x600') self.start_x = None self.start_y = None self.end_x = None self.end_y = None self.canvas = tk.Canvas(self, width=800, height=600) self.canvas.pack(fill="both", expand=True) self.image_on_canvas = None self.line_id = None self.text_id = None self.bind('<ButtonPress-1>', self.on_press) self.bind('<B1-Motion>', self.on_drag) self.bind('<ButtonRelease-1>', self.on_release) self.update_image() def update_image(self): screenshot = ImageGrab.grab() img_tk = ImageTk.PhotoImage(screenshot) if self.image_on_canvas is not None: self.canvas.delete(self.image_on_canvas) self.image_on_canvas = self.canvas.create_image(0, 0, anchor='nw', image=img_tk) self.canvas.img_tk = img_tk def on_press(self, event): self.start_x = self.canvas.canvasx(event.x) self.start_y = self.canvas.canvasy(event.y) def on_drag(self, event): if self.line_id or self.text_id: self.canvas.delete(self.line_id) self.canvas.delete(self.text_id) self.end_x = self.canvas.canvasx(event.x) self.end_y = self.canvas.canvasy(event.y) distance = int(math.sqrt((self.end_x - self.start_x)**2 + (self.end_y - self.start_y)**2)) self.line_id = self.canvas.create_line( self.start_x, self.start_y, self.end_x, self.end_y, fill='red', width=2 ) mid_point_x = (self.start_x + self.end_x) / 2 mid_point_y = (self.start_y + self.end_y) / 2 self.text_id = self.canvas.create_text(mid_point_x, mid_point_y, text=f'{distance}px') def on_release(self, event): pass if __name__ == "__main__": app = ScreenRuler() app.mainloop() ``` 此代码创建了一个名为 `ScreenRuler` 的类继承自 `tk.Tk`,用于构建图形用户界面[^2]。 当运行这段脚本时,会打开一个新的窗口显示当前屏幕的内容,在该窗口内按住鼠标的左键拖动可以选择任意两点绘制一条红线表示这两点间直线的距离,并实时更新这条线段的长度单位为像素(px)[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值