Найти - Пользователи
Полная версия: Применение эффектов PySide, PyQt
Начало » GUI » Применение эффектов PySide, PyQt
1
Lestoroer
Применяю эффекты с помощью setGraphicsEffect и у меня отображается только прозрачность.
Вот код :
class Table(QWidget):
    def __init__(self):
        super().__init__()
        self.window1()
    def window1 (self):
        self.setWindowTitle('Record')
        self.resize(339, 226)
        #Создаем тени
        shadow = QGraphicsDropShadowEffect(self)
        shadow.setColor(QColor(50,200,200))
        shadow.setBlurRadius(30)
        shadow.setOffset(4,-3)
        #Создаем прозрачность
        opacity = QGraphicsOpacityEffect(self)
        opacity.setOpacity(0.6)
        #Создаем текст
        self.label = QLabel('Работай уже, бл', self)
        self.label.setFont(QFont('Times New Roman', 20))
        #Применяем эффект тени и прозрачности
        self.label.setGraphicsEffect(shadow)
        self.label.setGraphicsEffect(opacity)
if __name__ == '__main__':
    import sys 
    app = QApplication(sys.argv) 
    window = Table() 
    window.show()
Как видно из двух последних строчек :
self.label.setGraphicsEffect(shadow)
self.label.setGraphicsEffect(opacity)
Были установлены сначала тени, потом прозрачность, но отображается только прозрачность, так понимаю, код работает таким образом : Сначала устанавливает тень :
self.label.setGraphicsEffect(shadow)
Потом ее же удаляет и устанавливает прозрачность:
self.label.setGraphicsEffect(opacity)
в итоге имеем только прозрачность.
Как обойти это? Как задать несколько эффектов для одного объекта (текста к примеру)?
vic57
http://it.kgsu.ru/Qt/qt0214.html

Всего доступно четыре эффекта: размытие (blur), расцвечивание (colorization), тень (drop shadow) и непрозрачность (opacity). Каждый из эффектов реализован в отдельном класс
Если четырех эффектов для вас недостаточно, то вы можете реализовать класс собственного эффекта, для этого будет необходимо унаследовать класс QGraphicsEffect и перезаписать метод draw()
2 минуты гугла
Lestoroer
vic57
http://it.kgsu.ru/Qt/qt0214.html
Это то я понял, что четыре эффекта всего. Они там применили по одному эффекту на одну фотографию. Как несколько то эффектов одновременно приложить на одну фотографию? Допустим, тени и прозрачность хочу.
Firik
Lestoroer
Как вариант, написать свой эффект с блэкджеком и прозрачностью.
Lestoroer
Firik
LestoroerКак вариант, написать свой эффект с блэкджеком и прозрачностью.
Тоже об этом думаю. Я так понимаю, эти эффекты нельзя совместить, т.к. они одним и тем же методом рисуются, их просто напросто не совместить вместе, один применил,- что-нибудь другое поехало. И как говорили выше, нужно будет draw() переопределять.
Firik
Не претендую на истину, но я бы копал так: если эти эффекты реализуются при помощи шейдеров, то как образец я бы взял шейдер для тени и добавил бы в него возможность установки прозрачности. Например, у тени есть метод setColor(r,g,b). Его стоит переделать в setColor(r,g,b,a), где а- прозрачность. Но это если шейдеры
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB