Форум сайта python.su
> Мне было интересно кто кого победил: вы кутю или оно вас?
И каков твой вердикт?
Отредактировано Rodegast (Июнь 22, 2016 18:51:30)
Офлайн
Что-бы вернуть тему в конструктивное русло, попробую подробнее объяснить что не так. Для рисования мышью нужно как минимум получать события: “mouseMoveEvent”, “mousePressEvent” и “mouseReleaseEvent”. А получить их можно только в уже закрашенной области виджета. Вот пример который это наглядно показывает:
#!/usr/bin/python # coding: utf-8 import sys from PySide import QtGui,QtCore class Holst(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.setWindowFlags(QtCore.Qt.X11BypassWindowManagerHint | QtCore.Qt.WindowStaysOnTopHint) self.setGeometry(QtGui.QDesktopWidget().screenGeometry()) self.setWindowOpacity(0.99) self._maska = QtGui.QBitmap(self.width(), self.height()) self._maska.fill(QtCore.Qt.color0) self.setMask(self._maska) self.setMouseTracking(True) self.show() def mouseMoveEvent(self, event): print event.globalX(), event.globalY() event.accept() def mousePressEvent(self, event): print "Press" event.accept() def mouseReleaseEvent(self, event): print "Release" event.accept() def paintEvent(self, event): polygon = QtGui.QPolygon() polygon.append(QtCore.QPoint(0, 0)) polygon.append(QtCore.QPoint(self.width(), self.height())) polygon.append(QtCore.QPoint(self.width(), 0)) painter = QtGui.QPainter(self._maska) painter.setBrush(QtGui.QBrush(QtCore.Qt.red)) painter.drawPolygon(polygon) painter.end() self.setMask(self._maska) painter = QtGui.QPainter(self) painter.setBrush(QtGui.QBrush(QtCore.Qt.red)) painter.drawPolygon(polygon) painter.end() if __name__ == "__main__": app = QtGui.QApplication(sys.argv) win = Holst() app.exec_()
Отредактировано Rodegast (Июнь 23, 2016 12:14:23)
Офлайн
RodegastМой вердикт такой:
И каков твой вердикт?
Офлайн
> QApplication с иконкой в трее
Нафига?
> минимизируем окно
Откуда окно?
> на иконку садим функцию перехвата событий winapi
Не кроссплатформенно.
> А далее, по клику создаём дочернее окно Qt в один пиксель, пишем ему move event обязательно, ну и остальное тоже пишем.
Бред.
Офлайн
RodegastКогда я такое читаю, у меня пропадает желание дальнейшего общения с великим умом.
Бред.
Офлайн
> а теперь кто-то уже подпрягся мне диагнозы выставлять.
Это не диагноз, а тот уровень на котором воспринимается твоя затея. Например зачем тебе иконка в трее?
Офлайн
RodegastЧтобы создавать события, если курсор за пределами окна кути.
Это не диагноз, а тот уровень на котором воспринимается твоя затея. Например зачем тебе иконка в трее?
Офлайн
Каким образом она создаст событие?
Офлайн
RodegastОбращаясь к иконке можно вызывать ту часть кода, которая связана с доступом к винапи, чтобы возобновить рисование:
Каким образом она создаст событие?
Офлайн
>Обращаясь к иконке можно вызывать ту часть кода, которая связана с доступом к винапи, чтобы возобновить рисование
Почему это надо делать именно через иконку?
> если тупо был клик мышкой, ложное меняется на истинное и продолжается рисование
Ага! У меня мышь рисует, а для её отключения нужно на иконку кликать. Так и шедевр загубить можно.
Офлайн