|
Expert Confirmé
Inscription : décembre 2007 Messages : 1 773 Détails du profil  Informations personnelles : Localisation : France Informations forums :
Inscription : décembre 2007 Messages : 1 773 Points : 3 042 Points : 3 042
|
Bonjour,
Voilà un petit exemple:
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import division
# python 2.7
import sys, os
from PyQt4 import QtCore, QtGui
#############################################################################
class Fenetre(QtGui.QWidget):
def __init__(self, parent=None):
super(Fenetre,self).__init__(parent)
self.resize(400, 300)
self.label = QtGui.QLabel(u"C'est un QLabel!!!", self)
self.label.setStyleSheet(u"background-color:yellow")
ombre = QtGui.QGraphicsDropShadowEffect(self)
ombre.setBlurRadius(10) # defaut: 1
ombre.setColor(QtGui.QColor(100,100,100, 180)) #defaut: QtGui.QColor(63, 63, 63, 180)
ombre.setOffset(4, 4) # defaut: 8,8
self.label.setGraphicsEffect(ombre)
posit = QtGui.QGridLayout()
posit.addWidget(self.label, 0, 0)
posit.setAlignment(self.label, QtCore.Qt.AlignCenter)
self.setLayout(posit)
#############################################################################
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
fen = Fenetre()
fen.show()
sys.exit(app.exec_()) |
On peut configurer l'ombre:
- setBlurRadius donne le flou (défaut=1).
- setColor donne la couleur (défaut=63,63,63,180 => gris avec transparence).
- setOffset donne le décalage de l'ombre (défaut=8,8)
A tester pour obtenir l'effet voulu!
Par ailleurs, il y a un exemple intéressant ici: http://stackoverflow.com/questions/1...16704#14016704: l'ombre n'est plus sous le QLabel mais sous le texte lui-même!
[Edit] Et c'est encore plus joli avec non pas un texte dans un label, mais une image dans un label. Voilà un petit exemple: il suffit de mettre une image jpg (elle sera redimensionnée).
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import division
# python 2.7
import sys, os
from PyQt4 import QtCore, QtGui
#############################################################################
class Fenetre(QtGui.QWidget):
def __init__(self, parent=None):
super(Fenetre,self).__init__(parent)
self.resize(400, 300)
self.label = QtGui.QLabel(self)
image = QtGui.QPixmap(u"monimage.jpg")
image = image.scaledToWidth(200, QtCore.Qt.SmoothTransformation)
self.label.setPixmap(image)
ombre = QtGui.QGraphicsDropShadowEffect(self)
ombre.setBlurRadius(20) # defaut: 1
ombre.setColor(QtGui.QColor(63,63,63, 180)) #defaut: QtGui.QColor(63, 63, 63, 180)
ombre.setOffset(8, 8) # defaut: 8,8
self.label.setGraphicsEffect(ombre)
posit = QtGui.QGridLayout()
posit.addWidget(self.label, 0, 0)
posit.setAlignment(self.label, QtCore.Qt.AlignCenter)
self.setLayout(posit)
#############################################################################
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
fen = Fenetre()
fen.show()
sys.exit(app.exec_()) |
[Edit2] Je n'ai pas pu résister: voilà l'exemple de l'ombre derrière un texte! J'ai exploité le lien donné ci-dessus.
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| #!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import division
# python 2.7
import sys, os
from PyQt4 import QtCore, QtGui
#############################################################################
class Fenetre(QtGui.QWidget):
def __init__(self, parent=None):
super(Fenetre,self).__init__(parent)
self.resize(400, 300)
self.scene = QtGui.QGraphicsScene(self)
self.view = QtGui.QGraphicsView(self)
self.view.setScene(self.scene)
self.text = self.scene.addText("Bonjour!")
font = QtGui.QFont()
font.setFamily(u"DejaVu Sans")
font.setPointSize(20)
self.text.setFont(font)
ombre = QtGui.QGraphicsDropShadowEffect(self)
# intensité du flou (defaut: 1)
ombre.setBlurRadius(10)
# couleur de l'ombre et niveau de transparence (defaut: QtGui.QColor(63, 63, 63, 180))
ombre.setColor(QtGui.QColor(63,63,63, 180))
# décalage de l'ombre (defaut: 8,8)
ombre.setOffset(4, 4)
self.text.setGraphicsEffect(ombre)
posit = QtGui.QGridLayout()
posit.addWidget(self.view, 0, 0)
#posit.setAlignment(self.view, QtCore.Qt.AlignCenter)
self.setLayout(posit)
#############################################################################
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
fen = Fenetre()
fen.show()
sys.exit(app.exec_()) |
C'est chouette, non?
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos...
Mes recettes python: http://www.jpvweb.com
|