Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (3)

Лучшие ответы пользователя

Все ответы (3)
  • Как сделать перемещение окна программы за кастомную рамку?

    @plyshk1n2k Автор вопроса
    Забыл про свой вопрос на время после того как в тот же день придумал простое и не очень(наверное) умное решение
    Оставлю код, вдруг кто будет искать решение данной проблемы и наткнется)

    # вызывается при нажатии кнопки мыши по форме
        def mousePressEvent(self, event):
            # Если нажата левая кнопка мыши
            if event.button() == QtCore.Qt.LeftButton:
                # получаем координаты окна относительно экрана
                x_main = main.geometry().x()
                y_main = main.geometry().y()
                # получаем координаты курсора относительно окна нашей программы
                cursor_x = QtGui.QCursor.pos().x()
                cursor_y = QtGui.QCursor.pos().y()
                # проверяем условием позицию курсора на нужной области программы(у нас это верхний бар) 
                # если всё ок - перемещаем
                # иначе игнорируем
                if x_main <= cursor_x <= x_main + main.geometry().width():
                    if y_main <= cursor_y <= y_main + main.widget_2.geometry().height():
                        self.old_pos = event.pos()
                    else:
                        self.old_pos = None
            elif event.button() == QtCore.Qt.RightButton:
                self.old_pos = None
    
        # вызывается при отпускании кнопки мыши
        def mouseReleaseEvent(self, event):
            if event.button() == QtCore.Qt.LeftButton:
                self.old_pos = None
    
        # вызывается всякий раз, когда мышь перемещается
        def mouseMoveEvent(self, event):
            if not self.old_pos:
                return
            delta = event.pos() - self.old_pos
            self.move(self.pos() + delta)


    Нажми "Нравится" если тебе помогло)
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (13)