Наложите все экраны и нарисуйте прямоугольник мышью

Я работаю над крошечной программой для захвата экрана, я хочу сделать это так же, как работает Win Snipping Tool. Сначала мне нужно наложить на все экраны слой непрозрачности 50%, а затем с помощью мыши нарисовать прямоугольник и прочитать координаты вершин. Честно говоря, понятия не имею, как это укусить. Я пробовал с win32api / gui, и это здорово, чтобы получить координаты мыши, но все равно не смог нарисовать прямоугольник. Моя идея (одна из многих) состоит в том, чтобы (с помощью PIL / ImageGrab) сделать снимки обоих дисплеев, наложить наложение и распечатать их в полноэкранном режиме во всех окнах, но мне это не удалось. Другая идея - взять img grab и создать два новых окна с помощью BeeWare / Toga (то есть фреймворка GUI, который я использую) в полноэкранном режиме, но мне не удалось найти какой-либо метод для открытия окна на втором дисплее. Мы будем благодарны за любые идеи и подсказки,Я очень рассчитываю на тебя, так как чувствую, что зашла в тупик.

1 ответ

Что ж, очень просто использовать tkinter. Хорошо, это принцип, когда я делаю свое приложение для скриншотов:

  1. Пользователь нажимает кнопку, чтобы начать.
  2. Создайте новое окно, ширина и высота которого должны покрывать все экраны, и скрыть строку заголовка (если это необходимо, возможно, используйте width=9999 а также height=9999).
  3. Сделайте снимок экрана всего рабочего стола (Вы можете использовать ImageGrab.grab((),all_screens=True)) для этого.
  4. Сделайте скриншот, показанный в Canvas(Я знаю это toga есть этот виджет).
  5. Запустите поток слушателя мыши и сохраните положение нажатия.
  6. Когда пользователь перемещает указатель мыши, создайте прямоугольник (toga's Canvas иметь функцию rect()).Может использовать это rect(pressed_x,pressed_y,move_x,move_y). И удалите последний прямоугольник (тогда он всегда будет отображать только один прямоугольник).
  7. Когда пользователь отпустил свою мышь, сохраните положение отпущенной кнопки и используйте ImageGrab.grab((pressed_x,pressed_y,released_x,released_y),all_screens=True), чтобы обрезать выбранную область.
  8. Если вы хотите отобразить это в интерфейсе приложения.toga есть виджет под названием ImageView.Вы можете поместить в него изображение.
Другие вопросы по тегам