Форум сайта python.su
Применяю эффекты с помощью 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)
Отредактировано Lestoroer (Май 6, 2016 20:09:08)
Офлайн
http://it.kgsu.ru/Qt/qt0214.html
Всего доступно четыре эффекта: размытие (blur), расцвечивание (colorization), тень (drop shadow) и непрозрачность (opacity). Каждый из эффектов реализован в отдельном класс2 минуты гугла
Если четырех эффектов для вас недостаточно, то вы можете реализовать класс собственного эффекта, для этого будет необходимо унаследовать класс QGraphicsEffect и перезаписать метод draw()
Отредактировано vic57 (Май 7, 2016 06:43:07)
Офлайн
vic57Это то я понял, что четыре эффекта всего. Они там применили по одному эффекту на одну фотографию. Как несколько то эффектов одновременно приложить на одну фотографию? Допустим, тени и прозрачность хочу.
http://it.kgsu.ru/Qt/qt0214.html
Отредактировано Lestoroer (Май 7, 2016 09:10:40)
Офлайн
Lestoroer
Как вариант, написать свой эффект с блэкджеком и прозрачностью.
Офлайн
FirikТоже об этом думаю. Я так понимаю, эти эффекты нельзя совместить, т.к. они одним и тем же методом рисуются, их просто напросто не совместить вместе, один применил,- что-нибудь другое поехало. И как говорили выше, нужно будет draw() переопределять.
LestoroerКак вариант, написать свой эффект с блэкджеком и прозрачностью.
Отредактировано Lestoroer (Май 7, 2016 09:13:59)
Офлайн
Не претендую на истину, но я бы копал так: если эти эффекты реализуются при помощи шейдеров, то как образец я бы взял шейдер для тени и добавил бы в него возможность установки прозрачности. Например, у тени есть метод setColor(r,g,b). Его стоит переделать в setColor(r,g,b,a), где а- прозрачность. Но это если шейдеры
Офлайн