Bonjour à tous et à toutes,
Je voudrais créer un petit OSD qui m'afficherait le nombre de messages dans ma boite mail. Le script qui se connecte à ma boite mail est écrit en python et retourne une valeur qui est affichée dans un thème SuperKaramba.
Je voudrais qu'en plus de retourner une valeur à SuperKaramba, le script affiche un OSD quand j'ai reçu un mail. Je connais pyosd (wrapper de XOSD) mais force est d'avouer que les OSD qu'il crée sont particulièrement moches. J'aimerais avoir la possibilité de créer un OSD sous forme d'un petit rectangle (si possible avec de la transparence), une image (une petite lettre) et enfin du texte (le nombre de mails reçus), un peut dans le même genre que l'OSD de K3b ou Amarok.
Je m'en remets à vous parce que Google ne veut plus m'aider (toutes mes requêtes renvoient vers pyosd). Je pense que c'est possible de faire ce genre de chose avec pyqt ou pykde mais je n'arrive pas à m'en sortir avec la doc. Une âme généreuse pour me refiler des bouts de code ? une explication ? un lien ? Je suis aussi prenneur de toute autre piste.
Merci de m'avoir lu jusqu'au bout ! (Si quelque chose n'est pas très clair, signalez-le moi ;-)
# petit bout de code
Posté par solsTiCe (site web personnel) . Évalué à 3.
un truc que j'ai vite fait et mal fait, si ça peut aider: http://home.tele2.fr/solsTiCe/osd.py
utilise pyqt et python
[^] # Re: petit bout de code
Posté par X345 . Évalué à 1.
C'est exactement ce que je voulais, un grand merci...
J'ai plus qu'à changer la police et la couleur !
Donc, encore merci....ça fait trois jour que je cherchais !
Comme quoi, il va vraiment falloir que je me plonge dans la doc de pyqt !
[^] # Re: petit bout de code
Posté par solsTiCe (site web personnel) . Évalué à 3.
c'est plutôt la doc de Qt qu'il faut regarder, ou se plonger dedans et s'y perdre ! ;-)
[^] # Re: petit bout de code
Posté par X345 . Évalué à 1.
Je suis dans la doc de qt mais c'est prévu pour du C++. Et comme je n'ai que des connaissances basiques de Python, j'ai beaucoup un peu de mal, c'est pour ça que j'avais demandé une base de travail. Je n'ai vrament aucun mal a me perdre dans la doc ;-)
J'ai quand même (en 2h) réussi a faire apparaitre l'OSD au dessus des autres fenêtres, a changer sa position et a supprimmer son entrée dans la barre des taches !
flags = Qt.WStyle_Customize | Qt.WStyle_NoBorder | Qt.WStyle_StaysOnTop | Qt.WType_Popup
J'ai aussi changé sa couleur : j'ai lutté avec le type Qcolor avant d'avoir la bonne idée d'utiliser Qtdesigner et pyuic pour voir le code qu'il produisaient !
Je cherche maintenant à pouvoir avoir un rectangle arrondi, la tranparence (c'est possible avec pyqt3.3 ?), un effet de glissement depuis l'un des bords de l'écran à l'apparition, une ombre, ajouter une image...
PS : Oui, je n'ai que ça à faire !
[^] # Re: petit bout de code
Posté par solsTiCe (site web personnel) . Évalué à 1.
# -*- coding: latin1 -*-
import sys
from qt import *
class Osd(QWidget):
def __init__(self,text,delay = 3000):
self.text = text
self.delay = delay
parent = None
name = 'Osd'
flags = Qt.WStyle_Customize | Qt.WStyle_NoBorder
QWidget.__init__(self,parent,name,flags)
self.setFixedSize(10,10)
self.main()
def main(self):
self.show()
QTimer.singleShot(self.delay,self.close)
def paintEvent(self,qpe):
p = QPainter()
p.begin(self)
p.setFont(QFont('Helvetica',24,QFont.Normal))
fm = p.fontMetrics()
w = fm.width(self.text)
h = fm.height()
self.setFixedSize(w+50,h+10)
p.drawText(25,25,QString(self.text))
# p.drawRoundRect(self.rect(),10,10)
p.end()
if __name__ == '__main__':
app = QApplication(sys.argv)
osd = Osd('Salut Xion345 !')
app.setMainWidget(osd)
app.exec_loop()
[^] # Re: petit bout de code
Posté par X345 . Évalué à 1.
Enfin, c'est du travail de sagouin mais ça marche quand même !
Les différences par rapport à la version du dessus sont que l'osd s'affiche au dessus de toutes les autres fenêtres, n'apparait pas dans la barre des taches et est constitué d'une icone en plus !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.