Как рисовать (непосредственно) на экране в Windows с помощью Python? ⇐ Python

Программы на Python
Anonymous
Как рисовать (непосредственно) на экране в Windows с помощью Python?

Сообщение Anonymous »

Я хочу создать визуальные подсказки для пользователей на их экранах, но меня поразило простое решение, как создавать базовые рисунки прямо на экране, не ограничивая действия пользователя (под Windows с Python 3.x). >
После поиска единственным, не работающим должным образом решением, которое я нашел, было использование wxPython. Вот код:

Код: Выделить всё

import wx

# init
app=wx.App()
dc=wx.ScreenDC()

# set line and fill style
dc.SetBrush(wx.TRANSPARENT_BRUSH)
dc.SetPen(wx.Pen((255, 0, 0), width=3, style=wx.PENSTYLE_SOLID))

# draw (x, y, width, height)
dc.DrawRectangle(100, 100, 200, 100)
Код рисуется на экране, но результат едва становится видимым, поскольку экран перерисовывается (Windows) очень быстро. Я попробовал повторить команду рисования с помощью цикла for, но мерцающий прямоугольник едва виден (и это не то, что я хотел бы показывать своим клиентам).
Немного лучше (почти достаточно) использовать прозрачное окно TKinter (без заголовка) и отображать его в течение более короткого периода времени. Вот его РАБОЧИЙ код (с одним недостатком, который описан под кодом):

Код: Выделить всё

from tkinter import *

def HighlightSection(Rect=(100,100,300,200), Color = 'red', Duration = 3):
win= Tk()
GeometryString = str(Rect[0])+'x'+str(Rect[1])+'+' \
+str(Rect[2])+'+'+str(Rect[3])
win.geometry(GeometryString) # "200x100+300+250" # breite, höhe, x, y #
win.configure(background=Color)
win.overrideredirect(1)
win.attributes('-alpha', 0.3)
win.wm_attributes('-topmost', 1)
win.after(Duration * 1000, lambda: win.destroy())
win.mainloop()
Одна вещь здесь мне не удалось заставить работать: Есть ли шанс сделать это «окно» TKinter кликабельным? Тогда этого было бы достаточно (почти неплохо) ). Пока это не переход по клику, пользователь не может действовать в выделенной области или под ней!
Есть ли простое и надежное решение для рисования (линий, прямоугольников, текста) на экран и снова снять его через определенный период времени? Любая помощь приветствуется! Заранее спасибо, Ульрих!

Подробнее здесь: https://stackoverflow.com/questions/677 ... ith-python

Вернуться в «Python»