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

Python Discussion :

canvas plein écran avec Tkinter


Sujet :

Python

  1. #1
    Membre confirmé
    Avatar de Captain'Flam
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 273
    Points : 455
    Points
    455
    Billets dans le blog
    1
    Par défaut canvas plein écran avec Tkinter
    Bonjour,

    je cherche a ouvrir une fenêtre Tkinter qui ne contient qu'un canvas et je voudrais savoir faire 2 choses avec (si elles sont possibles) :

    1 - lancer mon appli en plein écran avec le canvas dedans qui occupe toute la place possible (ie tout l'écran moins la barre de titre et les bordures sur les 3 autres côtés)
    2 - lancer mon appli de manière que même les bordures ne soient pas visibles : il n'y aurait que le canvas qui soit visible (ses dimensions seraient celles de l'écran).

    J'ai essayé toutes sortes de variantes à base de attributes('-fullscreen',True ), geometry('%dx%d+0+0' % (root.winfo_screenwidth(),root.winfo_screenheight())) et canevas.grid( stick=Tkinter.NSEW ) mais je n'obtiens pas ce que je veux...

    Le mieux que j'aie obtenu est un canvas plein écran mais avec les bordures de l'appli, du coup mon canvas dépasse de l'écran en bas à droite...
    Où alors je soustrais "à la main" les tailles des bordures (que j'évalue à la louche) de la taille de mon canvas.

    Je n'arrive pas à trouver la "bonne pratique" pour faire ce genre de choses.
    Pour le premier problème, j'imagine créer une appli plein écran, puis créer un canvas qui occupe tout l'espace disponible, puis récupérer les dimensions de ce canvas.
    Mais, même ça, je n'y arrive pas proprement !

    Si vous avez des pistes,
    merci d'avance !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 355
    Points : 36 883
    Points
    36 883
    Par défaut
    Salut,

    Le code suivant semble faire ce que vous souhaitez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import tkinter as tk
     
    root = tk.Tk()
    root.attributes('-fullscreen',True)
    root.overrideredirect(True)
    w, h = root.winfo_screenwidth(),root.winfo_screenheight()
    canvas = tk.Canvas(root, bg='green', width=w, height=h)
    quit_btn = tk.Button(root, text='quit', command=root.quit)
    canvas.pack(fill='both')
    canvas.create_window(100, 100, window=quit_btn, anchor='nw')
    tk.mainloop()
    (enfin, pour ce que j'en ai compris).

    - W

  3. #3
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 609
    Points : 2 073
    Points
    2 073
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Le code suivant semble faire ce que vous souhaitez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import tkinter as tk
     
    root = tk.Tk()
    root.attributes('-fullscreen',True)
    root.overrideredirect(True)
    w, h = root.winfo_screenwidth(),root.winfo_screenheight()
    canvas = tk.Canvas(root, bg='green', width=w, height=h)
    quit_btn = tk.Button(root, text='quit', command=root.quit)
    canvas.pack(fill='both')
    canvas.create_window(100, 100, window=quit_btn, anchor='nw')
    tk.mainloop()
    (enfin, pour ce que j'en ai compris).

    - W
    Parenthèse HS : j'ai déjà remarqué chez moi : "root.quit" ne fonctionne pas : il faut le remplacer par "root.destroy" : est-ce lié à ubuntu ou autre ?

  4. #4
    Membre confirmé
    Avatar de Captain'Flam
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 273
    Points : 455
    Points
    455
    Billets dans le blog
    1
    Par défaut
    Merci wiztricks !

    J'ai légèrement modifié votre code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        root = Tkinter.Tk()
        root.attributes('-fullscreen',True )
        can = Tkinter.Canvas( root,bg='black' )
        can.pack( fill='both',expand=1 )
    ---> je ne fixe pas la taille du canvas, mais j'ajoute expand=1.
    Il me reste toujours une bordure grise (de 2 pixels) autour de mon canvas (qui est noir).
    Cette bordure semble être dessinée par dessus le canvas lui-même.
    Le point 0,0 du canvas est "sous" la bordure et est toujours caché.
    Même avec borderwidth=0 elle est toujours là.
    Peut-être s'agit-il de la bordure de l'appli (toplevel) elle-même ?
    Mais là, je ne sais pas comment l'effacer...

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 355
    Points : 36 883
    Points
    36 883
    Par défaut
    Salut,

    Citation Envoyé par Captain'Flam Voir le message
    Le point 0,0 du canvas est "sous" la bordure et est toujours caché.
    Même avec borderwidth=0 elle est toujours là.
    Peut-être s'agit-il de la bordure de l'appli (toplevel) elle-même ?
    C'est la "bordure" du canvas.
    Elle peut être supprimée via canvas['highlightthickness'] = False

    - W

  6. #6
    Membre confirmé
    Avatar de Captain'Flam
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 273
    Points : 455
    Points
    455
    Billets dans le blog
    1
    Par défaut
    Super !

    Merci wiztricks, j'ai exactement ce que je voulais !
    J'ai fixé le paramètre comme ça : Tkinter.Canvas( root,bg='black',highlightthickness=0 )Mais c'est dans aucune des docs que j'ai sous la main...

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

Discussions similaires

  1. choix écran pour plein écran avec dual screen
    Par luckyvae dans le forum VirtualBox
    Réponses: 2
    Dernier message: 21/10/2010, 08h26
  2. [Direct3D plein écran avec fenêtre fille ?]
    Par brunix007 dans le forum DirectX
    Réponses: 4
    Dernier message: 03/04/2008, 16h26
  3. Réponses: 7
    Dernier message: 12/11/2007, 21h08
  4. Fenêtre en plein écran avec XPCE
    Par j07nathan dans le forum Prolog
    Réponses: 2
    Dernier message: 03/03/2007, 09h48
  5. Ouvrir une popup en plein écran avec une barre de menu.
    Par magic8392 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 12/10/2005, 10h43

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