我正在开发用于捕获屏幕打印的小程序,我想以类似于 Win Snipping Tool 工作的方式来完成它。首先,我需要用 50% 的不透明度图层覆盖所有屏幕,然后使用鼠标绘制一个矩形并读取顶点坐标。老实说,我不知道如何咬这个。我尝试使用 win32api / gui,获得鼠标坐标很棒,但仍然无法绘制矩形。我的想法(其中之一)是(使用 PIL / ImageGrab)拍摄两个显示器的照片,放置一个叠加层并将它们作为全屏打印在所有窗口上,但我在这样做时失败了。另一个想法是使用 img 抓取并使用 BeeWare / Toga(我正在使用的 GUI 框架)全屏创建两个新窗口,但我找不到在第二个显示器上打开窗口的任何方法。任何想法和提示将不胜感激,
问问题
448 次
1 回答
0
嗯,它很容易使用tkinter
。好的,这是我做截图应用时的原则:
- 用户按下按钮开始。
- 新建一个窗口,其宽度和高度应完全覆盖所有屏幕,并隐藏标题栏(如果必须实现,可以使用
width=9999
andheight=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
.You 的小部件。您可以将图像放入其中。
于 2020-04-08T09:45:35.440 回答