OVH Cloud OVH Cloud

Splash screen avec Tkinter

4 réponses
Avatar
Yann.K
Bonjour à tous.

Je cherche à créer un splash screen au lancement de mon application.
Je souhaiterai n'utiliser que Tkinter et obtenir un splash sans bordure,
barre de fenetre ou icone.
Je parviens de façon sommaire au but en utilisant

def splash_win():
"Ecran Splash de démarrage du programme."
root.withdraw()
top = Toplevel(height=300,width=300, bg='green')
top.overrideredirect(top)
top.geometry('+100+50')
...

def close_splash(top):
root.deiconify()
top.destroy()

Mais le widget top n'est pas clicable (je ne peux donc y associer
d'évenement pour lancer la fonction, "close_splash"), et pas moyen
d'arriver à utiliser un timer (top.after(10000, close_splash(top)) provoque
l'affichage de la fenêtre principale (root) au bout de 10 sec sans jamais
afficher le splash)...

Si vous aviez un exemple ou une piset intéressante (toutes les applis python
écrite en python et qui affiche un splash au démarrage utilisent d'autres
bibliothéque que Tkinter...


Merci d'avance et bonne soirée.

--
Yann.K

4 réponses

Avatar
Eric Brunel
Yann.K wrote:
Bonjour à tous.

Je cherche à créer un splash screen au lancement de mon application.
Je souhaiterai n'utiliser que Tkinter et obtenir un splash sans bordure,
barre de fenetre ou icone.
Je parviens de façon sommaire au but en utilisant

def splash_win():
"Ecran Splash de démarrage du programme."
root.withdraw()
top = Toplevel(height00,width00, bg='green')
top.overrideredirect(top)
top.geometry('+100+50')
...

def close_splash(top):
root.deiconify()
top.destroy()

Mais le widget top n'est pas clicable (je ne peux donc y associer
d'évenement pour lancer la fonction, "close_splash"), et pas moyen
d'arriver à utiliser un timer (top.after(10000, close_splash(top)) provoque
l'affichage de la fenêtre principale (root) au bout de 10 sec sans jamais
afficher le splash)...


Le code suivant marche chez moi (sous Linux avec Python 2.1 et tcl/tk 8.3):

--splash.py-------------------------
from Tkinter import *

root = Tk()
root.withdraw()

splash = Toplevel(bg='green')
splash.overrideredirect(1) # C'est un booléen pour overrideredirect
splash.geometry('300x300+100+50')

def showRoot(*args):
splash.destroy()
root.deiconify()

splash.bind('<1>', showRoot)
root.after(4000, showRoot)

root.mainloop()
-------------------------------------

Une superbe fenetre verte est affichée et disparait au bout de 4 secondes, sauf
si on clique dessus, auquel cas elle disparait tout de suite; puis la fenetre
principale est affichée.

Si ça ne marche pas chez toi, essaie de mettre un splash.update() après le
splash.geometry(...); si tu es sous Windows, ça peut aider...

Si vous aviez un exemple ou une piset intéressante (toutes les applis python
écrite en python et qui affiche un splash au démarrage utilisent d'autres
bibliothéque que Tkinter...


Merci d'avance et bonne soirée.


Heu, pas de quoi et plutot bonne journée alors...
--
- Eric Brunel <eric (underscore) brunel (at) despammed (dot) com> -
PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com

Avatar
Yann.K
Eric Brunel wrote:
Une superbe fenetre verte est affichée et disparait au bout de 4 secondes,
sauf si on clique dessus, auquel cas elle disparait tout de suite; puis la
fenetre principale est affichée.
Ok; vous avez confirmé la piste à creuser: j'étais très prét du résultat!

En fait comme tout est imbriqué dans des fonctions, j'avais qq problèmes de
transmission de variable (encore une fois), désormais tout marche tip-top!

Au passage, je galére pas mal à trouver des commandes et les détails de ces
commandes.
Existe-t-il un outil (en ligne ou pas) qui permette de faire des recherches
(boléennes si possible) sur les commandes (et les concepts) pythons.
...du style pour PHP de:
http://www.nexen.net/docs/php/annotee/indexes.functions.php

Merci de votre aide et bonne soirée,

--
Yann.K

Avatar
Spontex
François wrote:
Yann.K wrote:

Au passage, je galére pas mal à trouver des commandes et les détails
de ces
commandes.
Existe-t-il un outil (en ligne ou pas) qui permette de faire des
recherches
(boléennes si possible) sur les commandes (et les concepts) pythons.



pydoc est livré en standard avec python


Oui, mais on est quand même très loin de la doc. PHP mentionnée plus
haut qui est complète, fournit des exemples, des commentaires des
utilisateurs. N'y a-t-il pas un équivalent pour Python ?


Avatar
François
Yann.K wrote:
Au passage, je galére pas mal à trouver des commandes et les détails de ces
commandes.
Existe-t-il un outil (en ligne ou pas) qui permette de faire des recherches
(boléennes si possible) sur les commandes (et les concepts) pythons.


pydoc est livré en standard avec python