OVH Cloud OVH Cloud

Tkinter TrayIcon

10 réponses
Avatar
Yves Lange
Bonjour,

j'aimerai mettre une de mes applications dans le système tray de win32
(à coté de l'horloge). Et j'aimerai lui faire afficher toutes les
30minutes une petites notifications... ??? Pas très compliqué en
apparence mais je ne trouve pas beaucoup de documentation avec python à
ce sujet. N'y a-t-il pas une simple fonction comme pour le changement
d'icone en Tkinter : fen.iconbitmap("name.ico")... ?

merci

10 réponses

Avatar
hg
Yves Lange wrote:

Bonjour,

j'aimerai mettre une de mes applications dans le système tray de win32
(à coté de l'horloge). Et j'aimerai lui faire afficher toutes les
30minutes une petites notifications... ??? Pas très compliqué en
apparence mais je ne trouve pas beaucoup de documentation avec python à
ce sujet. N'y a-t-il pas une simple fonction comme pour le changement
d'icone en Tkinter : fen.iconbitmap("name.ico")... ?

merci


Je fais quelque chose d'équivalent avec wxPython.

hg

Avatar
hg
jean-michel bain-cornu wrote:

Bonjour,
j'aimerai mettre une de mes applications dans le système tray de win32
(à coté de l'horloge). Et j'aimerai lui faire afficher toutes les
30minutes une petites notifications... ??? Pas très compliqué en
apparence mais je ne trouve pas beaucoup de documentation avec python à
ce sujet. N'y a-t-il pas une simple fonction comme pour le changement
d'icone en Tkinter : fen.iconbitmap("name.ico")... ?

merci


Je fais quelque chose d'équivalent avec wxPython.


Si par hasard tu as un petit exemple, je suis preneur...


Pour l'icone dans la dans la barre système, regarde la démo de wxPython
(http://www.wxpython.org/download.php)

Pour le reste (cut & paste de mes applis ... tout n'est pas à garder :-) ):
#TIMER:

class MyWaitClass(wx.Dialog):
def __init__(self, parent, id, title,
pos = wx.DefaultPosition, size = wx.DefaultSize,
style = wx.DEFAULT_DIALOG_STYLE ):
wx.Dialog.__init__(self, parent, id, title, pos, size, style)

self.m_parent = parent
self.ID = 1
# WDR: dialog function MyWaitDialogFunc for MyWaitClass
#MyWaitDialogFunc( self, True )

# WDR: handler declarations for MyWaitClass
#wx.EVT_BUTTON(self, ID_BUTTON_CANCEL, self.OnCancel)
wx.EVT_TIMER(self, self.ID, self.OnIdle)

self.m_timer = wx.Timer(self, self.ID)
self.m_timer.Start(100)
self.m_cancel = False
# WDR: methods for MyWaitClass

# WDR: handler implementations for MyWaitClass

def OnCancel(self, event):
self.m_cancel = True
self.Close()

def OnIdle(self, event): #APPELE TOUTE LES 100 MILLISEC
#print 'OnIdle'
try:
self.m_parent.m_card_conn.ATR()
if True = self.m_parent.m_intf.Select_Card(self.m_parent.m_card_conn):
self.m_timer.Stop()
self.Close()
except:
print traceback.format_exc()
pass

#ICONISER OU RE-OUVRIR UNE FENETRE:
#utiliser self.Iconize(False ou True) self étant une Frame


hg



Avatar
NicolasP
Bonjour,

j'aimerai mettre une de mes applications dans le système tray de win32
(à coté de l'horloge). Et j'aimerai lui faire afficher toutes les
30minutes une petites notifications... ??? Pas très compliqué en
apparence mais je ne trouve pas beaucoup de documentation avec python à
ce sujet. N'y a-t-il pas une simple fonction comme pour le changement
d'icone en Tkinter : fen.iconbitmap("name.ico")... ?


As tu regardé du côté de pywin32 (http://aspn.activestate.com/ASPN/docs/ASPNTOC-APYTH2.4.0/) ?
Je ne sais pas si c'est la bonne piste à suivre mais c'en est une.

Nicolas

Avatar
jean-michel bain-cornu
Bonjour,
j'aimerai mettre une de mes applications dans le système tray de win32
(à coté de l'horloge). Et j'aimerai lui faire afficher toutes les
30minutes une petites notifications... ??? Pas très compliqué en
apparence mais je ne trouve pas beaucoup de documentation avec python à
ce sujet. N'y a-t-il pas une simple fonction comme pour le changement
d'icone en Tkinter : fen.iconbitmap("name.ico")... ?

merci


Je fais quelque chose d'équivalent avec wxPython.


Si par hasard tu as un petit exemple, je suis preneur...


Avatar
jean-michel bain-cornu
Pour l'icone dans la dans la barre système, regarde la démo de wxPython
(http://www.wxpython.org/download.php)
Oups, c'est dans Main.py (DemoTaskBarIcon Class), je ne l'avais pas vu

celle_là.


Pour le reste (cut & paste de mes applis ... tout n'est pas à garder :-) ):
Ok merci. Je vois que c'est à base de wx.Timer, pour lequel il y a aussi

une démo.

A+
jm

Avatar
hg
Yves Lange wrote:

Bonjour,

j'aimerai mettre une de mes applications dans le système tray de win32
(à coté de l'horloge). Et j'aimerai lui faire afficher toutes les
30minutes une petites notifications... ??? Pas très compliqué en
apparence mais je ne trouve pas beaucoup de documentation avec python
à ce sujet. N'y a-t-il pas une simple fonction comme pour le
changement d'icone en Tkinter : fen.iconbitmap("name.ico")... ?


As tu regardé du côté de pywin32
(http://aspn.activestate.com/ASPN/docs/ASPNTOC-APYTH2.4.0/) ?
Je ne sais pas si c'est la bonne piste à suivre mais c'en est une.

Nicolas
Dommage qu'il n'existe pas un truc avec Tkinter du style


app.Iconize()...


Il y a un thread intéressant sur le groupe anglo-saxon au sujet du devenir
de TKinter ... apparement aussi une discussion au sein de la communauté
tcl ... celà inclut aussi le manque de support impression/preview
cross-plateforme .

Dieu à dit:
http://mail.python.org/pipermail/python-list/2000-February/025179.html

C'est rigolo parceque ça date de 2000 et que c'est toujours une sorte
d'axiome.


hg



Avatar
Yves Lange
Bonjour,

j'aimerai mettre une de mes applications dans le système tray de win32
(à coté de l'horloge). Et j'aimerai lui faire afficher toutes les
30minutes une petites notifications... ??? Pas très compliqué en
apparence mais je ne trouve pas beaucoup de documentation avec python
à ce sujet. N'y a-t-il pas une simple fonction comme pour le
changement d'icone en Tkinter : fen.iconbitmap("name.ico")... ?


As tu regardé du côté de pywin32
(http://aspn.activestate.com/ASPN/docs/ASPNTOC-APYTH2.4.0/) ?
Je ne sais pas si c'est la bonne piste à suivre mais c'en est une.

Nicolas
Dommage qu'il n'existe pas un truc avec Tkinter du style


app.Iconize()...


Avatar
NicolasP
Bonjour,

j'aimerai mettre une de mes applications dans le système tray de
win32 (à coté de l'horloge). Et j'aimerai lui faire afficher toutes
les 30minutes une petites notifications... ??? Pas très compliqué en
apparence mais je ne trouve pas beaucoup de documentation avec python
à ce sujet. N'y a-t-il pas une simple fonction comme pour le
changement d'icone en Tkinter : fen.iconbitmap("name.ico")... ?


As tu regardé du côté de pywin32
(http://aspn.activestate.com/ASPN/docs/ASPNTOC-APYTH2.4.0/) ?
Je ne sais pas si c'est la bonne piste à suivre mais c'en est une.

Nicolas
Dommage qu'il n'existe pas un truc avec Tkinter du style


app.Iconize()...


J'utilise wxPyton et je ne connais pas TKinter. Je sais juste que TKinter est assez limité.



Avatar
Eric Brunel
On Fri, 26 Jan 2007 08:54:09 +0100, NicolasP wrote:
J'utilise wxPyton et je ne connais pas TKinter. Je sais juste que
TKinter est assez limité.


Ca dépend pour quoi en fait. La situation est assez bizarre: Tkinter ne
donne accès qu'au widgets tk "de base". Mais tk a plein d'extensions,
largement utilisées par la communauté tcl; sauf qu'ils n'ont pas vraiment
de wrappers "officiels" dans Tkinter. J'ai vu un programmeur tcl/tk
essayant Python/Tkinter et disant qu'il était hyper-frustré de ces
limitations. Du coup, aujourd'hui, pour beaucoup d'applis , utiliser
wxWidgets/wxPython est beaucoup plus pratique parce qu'on y trouve à peu
près tous les widgets dont on pourrait rêver.

Par contre, et c'est là où ça devient étrange, certains widgets tk/Tkinter
sont extrêmement puissants et peuvent faire gagner énormément de temps
dans certains types d'applis. Je pense surtout aux widgets Text et Canvas,
qui sont littéralement un petit traitement de texte pour le premier et une
petite appli de dessin vectoriel pour le second. Apparemment, le widget
texte de wxWidgets a plus ou moins rattrapé celui de tk. Pour le canvas,
je n'ai pas l'impression que ce soit vrai. On m'avait bien signalé un
widget FloatCanvas dans wxWidgets, mais la dernière fois que j'ai regardé,
on était encore assez loin des possibilités de celui de tk. Donc
aujourd'hui, pour une appli de dessin vectoriel, je n'hésiterais pas et je
partirais sur Python/Tkinter, parce que je sais que ça me fera gagner un
temps monstre sur cette partie, même si le reste a l'air un peu piteux[*].

En conclusion, on ne le dira jamais assez, l'important est de choisir le
bon outil pour le bon usage.

[*] Je l'ai déjà dit plein de fois, mais je le re-dis: la communauté tcl
est consciente que tk fait un peu pitié côté look et choix de widgets, et
travaille à fond dessus; voir là:
http://tktable.sourceforge.net/tile/index.html
Ce sera dans la prochaine version de tcl/tk (8.5). Espérons que les
wrappers Tkinter suivent vite.
--
python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"

Avatar
NicolasP
On Fri, 26 Jan 2007 08:54:09 +0100, NicolasP wrote:
J'utilise wxPyton et je ne connais pas TKinter. Je sais juste que
TKinter est assez limité.


Ca dépend pour quoi en fait. La situation est assez bizarre: Tkinter ne
donne accès qu'au widgets tk "de base". Mais tk a plein d'extensions,
largement utilisées par la communauté tcl; sauf qu'ils n'ont pas
vraiment de wrappers "officiels" dans Tkinter. J'ai vu un programmeur
tcl/tk essayant Python/Tkinter et disant qu'il était hyper-frustré de
ces limitations. Du coup, aujourd'hui, pour beaucoup d'applis , utiliser
wxWidgets/wxPython est beaucoup plus pratique parce qu'on y trouve à peu
près tous les widgets dont on pourrait rêver.

Par contre, et c'est là où ça devient étrange, certains widgets
tk/Tkinter sont extrêmement puissants et peuvent faire gagner énormément
de temps dans certains types d'applis. Je pense surtout aux widgets Text
et Canvas, qui sont littéralement un petit traitement de texte pour le
premier et une petite appli de dessin vectoriel pour le second.
Apparemment, le widget texte de wxWidgets a plus ou moins rattrapé celui
de tk. Pour le canvas, je n'ai pas l'impression que ce soit vrai. On
m'avait bien signalé un widget FloatCanvas dans wxWidgets, mais la
dernière fois que j'ai regardé, on était encore assez loin des
possibilités de celui de tk. Donc aujourd'hui, pour une appli de dessin
vectoriel, je n'hésiterais pas et je partirais sur Python/Tkinter, parce
que je sais que ça me fera gagner un temps monstre sur cette partie,
même si le reste a l'air un peu piteux[*].

En conclusion, on ne le dira jamais assez, l'important est de choisir le
bon outil pour le bon usage.

[*] Je l'ai déjà dit plein de fois, mais je le re-dis: la communauté tcl
est consciente que tk fait un peu pitié côté look et choix de widgets,
et travaille à fond dessus; voir là:
http://tktable.sourceforge.net/tile/index.html
Ce sera dans la prochaine version de tcl/tk (8.5). Espérons que les
wrappers Tkinter suivent vite.
--python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"


Intéressant à savoir tout ça.
A suivre donc.