IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Appli plein écran invisible dans la barre de tâches


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Par défaut Appli plein écran invisible dans la barre de tâches
    Bonjour !

    Grâce à vous tous , j'ai réussi à coder une petite appli en plein écran.
    Ca marche nickel mais un truc me chiffonne :
    mon appli n'apparaît pas dans la barre de tâches !
    Même avec alt-tab je ne vois pas l'icône correspondante...
    Du coup, si par mégarde je recouvre mon appli, je ne peux plus la retrouver à moins d'iconiser toutes les autres...

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import Tkinter
    import threading
    import time
     
    def Clock () :
     
        def kill (dummy):
            root.timer.cancel()
            root.destroy()
     
        def tick():
            text = time.strftime('%H:%M:%S')
            if text != root.text : 
                root.clock.config( text = text )
                root.text = text
            root.timer = threading.Timer( 0.02,tick )
            root.timer.start()
     
        root = Tkinter.Tk()
        root.geometry("%dx%d"%(root.winfo_screenwidth(),root.winfo_screenheight()))
        root.configure( background = '#000000' )
        root.overrideredirect( True )
        root.resizable( False,False )
        root.focus_set()
        root.bind('<Escape>',kill )
     
        root.text  = ''
        root.clock = Tkinter.Label( font = ( 'tahoma',root.winfo_screenwidth()/12,'bold' ) , bg='#000000' , fg='#109040' )
        root.clock.place( relx = 0.5 , rely = 0.5 , anchor = Tkinter.CENTER )
     
        tick()
        root.mainloop()
     
    Clock()
    Quelqu'un aurait-il une explication, et encore mieux, une solution ?

    Au passage, que font exactement overrideredirect et focus_set ?

    Merci d'avance

  2. #2
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut

    tu pourrais tester en commentant les lignes pour voir ce qu'elle font.

    root.overrideredirect( True ) >> c'est justement cette fonction qui te fait disparaitre ton appli de la barre de tache et du alt+tab

    l'astuce serait d'enlever le overrideredirect, et calculer la taille de ta fenetre de facon a ce qu'elle soit plus grande que ton ecran, et de la placer de maniére a faire disparaitre les bords a l'extérieur de l'ecran.

    quant a focus_set(), cette méthode permet de donner le focus a ta fenetre.

  3. #3
    Membre confirmé Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Par défaut
    Super
    tu pourrais tester en commentant les lignes pour voir ce qu'elle font.
    C'est exactement ce que j'ai fait...
    Et comme je ne voyais aucun changement, j'ai fini par poster la question ici.

    Bilan des courses :

    - overrideredirect : mystère mystérieux : je n'avais donc remarqué aucune différence, mais en réessayant selon tes conseils, ça a marché !
    Va comprendre...
    J'ai dû rater un truc lors de mes essais précédents...

    - focus_set : là pour le coup, je ne vois vraiment aucune différence avec et sans :
    Je lance une commande depuis un shell qui fait une pause de 5 sec puis lance ma petite appli.
    Pendant ces 5 sec je ramène une autre appli au premier plan.
    Au bout des 5 sec, je vois bien mon appli apparaître mais elle ne passe pas au premier plan, ni ne prend le focus...
    Exactement le même comportement que sans focus_set.
    ---> y a-t-il un moyen de forcer l'appi à passer au premier plan ?

    En tous cas, ton idée de fenêtre plus grande que l'écran qui déborde des 4 cotés, c'est génial ! ça marche nickel !

    Merci

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Pour ce qui est de l'overrideredirect c'est bien plus que cela. Cela permet de passer outre le gestionnaire de fenêtre.
    Cela veux dire que les Objets créés après l'overrideredirect n'ont pas de référence au gestionnaire de fenêtre.
    Vous en avait un exemple ici.

    L'idée d'airod est bonne mais demande peut être un développement : Créer un Widget (Frame), qui vas servir de conteneur principal, de la taille de l'écran et centrer l'application. Pour ce qui est de redimensionner un Widget Frame pensez à faire un update et à mettre les bordures à zéro.

    Pour ce qui est de passer au premier plan un .withdraw()/.deiconify() devrait le faire.

    Bon code

  5. #5
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Bonjour,
    Si ton but est de faire du plein écran alors il y a également la méthode Tk.wm_attributes qui permet de définir la transparence,la couleur de transparence, le type (boite de dialogue/...)

    Voici bout de code pour une fenêtre fullscreen.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    from Tkinter import *
     
    root = Tk()
    root.title("Fenetre Full-Screen")
    lst = list(root.wm_attributes())
    lst[7] = 1
    #les valeurs des attributs ont des indices impairs.
    root.wm_attributes(*lst)
    root.mainloop()
    @+ et bon code :rmgreen:
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  6. #6
    Membre confirmé Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Par défaut
    Super !

    sauf que je préfère la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lst[lst.index('-fullscreen')+1] = 1
    Merci !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Masquer l'appli dans la barre des tâches win7
    Par ThieBEN dans le forum VBA Access
    Réponses: 4
    Dernier message: 03/06/2014, 17h02
  2. Réponses: 7
    Dernier message: 13/11/2011, 23h41
  3. Jouer avec l'icône d'une appli dans la barre de tâches
    Par Captain'Flam dans le forum Tkinter
    Réponses: 2
    Dernier message: 13/02/2011, 14h22
  4. Créer des balises invisibles dans la barre d'adresse ?
    Par bluesboyjo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 30/12/2009, 18h22
  5. Problème avec mon appli mis en icone dans la barre des tâches
    Par Leray dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 10/04/2007, 20h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo