我正在开发一个捕捉屏幕打印的小程序,我想以与Win Snipping Tool类似的方式来完成它。首先,我需要用50%的不透明度层覆盖所有屏幕,然后用鼠标绘制一个矩形并读取顶点坐标。老实说,我不知道该怎么咬。我试过使用win32api/gui,它可以很好地获取鼠标坐标,但仍然无法绘制矩形。我的想法(其中之一(是(使用PIL/ImageGrab(拍摄两个显示器的照片,放置一个覆盖层,并将其打印为所有窗口的全屏,但我在做这件事时失败了。另一个想法是使用img抓取并在全屏中使用BeeWare/Toga(我正在使用的GUI框架(创建两个新窗口,但我找不到任何方法在第二个显示器上打开窗口。任何想法和暗示都将不胜感激,我真的很指望你,因为我觉得我已经走到了死胡同。
嗯,使用tkinter
非常容易。好的,这是我制作屏幕截图应用程序时的原则:
- 用户按下按钮启动
- 制作一个新窗口,其宽度和高度应完全覆盖所有屏幕,并隐藏标题栏(如果必须实现,可以使用
width=9999
和height=9999
( - 截图所有桌面(可以使用
ImageGrab.grab((),all_screens=True)
( - 制作
Canvas
中显示的屏幕截图(我知道toga
有这个小部件( - 启动鼠标侦听器线程并保存按下的位置
- 当用户移动鼠标时,创建一个矩形(
toga's Canvas
有一个函数rect()
(。也许使用这个rect(pressed_x,pressed_y,move_x,move_y)
。然后删除最后一个矩形。(然后它总是只显示一个矩形( - 当用户释放鼠标时,保存释放的位置。并使用
ImageGrab.grab((pressed_x,pressed_y,released_x,released_y),all_screens=True)
裁剪所选区域 - 如果您想在应用程序界面中显示它。
toga
有一个名为ImageView
的小部件。您可以将图像放入其中