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 :

[Tkinter] Couleurs, caractères, fenêtre...


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 6
    Points
    6
    Par défaut [Tkinter] Couleurs, caractères, fenêtre...
    Bonjour à tous,

    tout d'abord je tiens à vous dire que je suis relativement novice dans le monde de la programmation

    je suis en train de faire un tableau périodique en python pour mon TPE et j'ai fais le plus dur, mais il reste encore quelques petits problèmes que je n'arrive pas à résoudre...

    Quand je veux afficher le symbole "°" (pour les valeurs en degrés) à l'intérieur d'un widget text je me retrouve avec une barre verticale, alors que ce symbole s'affiche bien dans l'IDLE...il faut que je déclare un codage spécifique? si oui lequel?

    sans vouloir paraître pointilleux, j'aimerais savoir également comment on est supposé changer la couleur du "background" (l'intérieur de la fenêtre, pas les contours)
    j'ai rempli ma fenêtre de pas mal de widgets, et quand je veux changer la couleur du fond je n'ai que les contours qui changent de couleur

    j'ai pris un screenshot : http://img510.imageshack.us/img510/6637/tableau5bl.jpg

    voilà la partie "main" de mon prog :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    root = Tk()
    root.title("Tableau périodique des éléments")
    root.geometry("700x500")
    root.configure(bg = "white")
    app = Application(root)
    root.mainloop()
    et pour finir, comment faire en sorte que tous les éléments s'affichant dans la fenêtre grandissent proportionnellement lorsque je passe en plein écran ou agrandis cette fenêtre?

    voilà un exemple (j'ai viré root.configure(bg = "white") pour ce ss) :
    http://img525.imageshack.us/img525/5585/bigtab1ar.jpg

    le prog reste au milieu et le reste est vide...

    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 : 48
    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
    Points : 891
    Points
    891
    Par défaut
    je pense qu'il serait bien que tu places tes éléments dans une frame, qui est contenu dans ta fenetre.
    Là tu pourra changer la couleur du fond.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fen=Tk()
    frame1=Frame(fen, bg='white',......)
    bouton1=Button(frame1, text='....)
    je débute aussi sous pytohn tkinter, et c'est comme cela que je change la couleur de ma fenetre.

    coté mise en page, je crois qu'il faut passer par qque chose comme des sizer, mais en Tkinter je n'ai pas connaissance de leur éxistance.

    bon courage

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    j'ai fait un script vite fait avec ce que tu m'as donné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from Tkinter import *
     
    fen = Tk()
    frame1 = Frame(fen, bg = "white")
    frame1.grid()
    bouton1 = Button(frame1, text = "toto")
    bouton1.grid(row = 1, column = 2)
    bouton2 = Button(frame1, text = "tortue")
    bouton2.grid()
    fen.configure(bg = "white")
    fen.mainloop()
    celui-ci modifie la couleur du fond complètement, tandis que seuls les espaces vides du carré (i.e de la frame) qui contient les boutons sont changés lorsque j'enlève fen.configure(bg = "white")

    si je comprends bien, la commande fen.configure(bg = "white") (ou root.configure(bg = "white") dans mon premier exemple) modifie seulement la couleur de ce qui est hors de la frame, et donc qu'il faut associer les 2 pour changer le fond complètement?
    car c'est bien la frame qui me pose problème...

    voilà à quoi ressemble le début de mon prog :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    from Tkinter import *
     
    class Application(Frame):
        def __init__(self, master):
            Frame.__init__(self, master)
            self.grid()
            self.create_widgets()
            self.groupe()
            self.periode()
    à vrai dire je ne comprends pas bien les 3 premières lignes (à partir de class), que j'ai "pompées" d'un tuto
    globalement je vois que je crée une nouvelle classe, mais dans les détails...

    par conséquent je ne vois pas comment faire pour changer la couleur du fond de la frame, puisque je ne vois pas qui fait quoi

    dans mon prog, la commande app = Frame(root, bg = "white") n'a aucun effet...ça doit être à cause de ces 3 lignes, et que j'ai besoin d'adapter

    merci, du courage je vais en avoir besoin

  4. #4
    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 : 48
    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
    Points : 891
    Points
    891
    Par défaut
    un bout de code pour t'aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from Tkinter import *
     
    fen=Tk()
    fram=Frame(fen,height=200,width=200,bg='red')
    fram.grid()
     
    bouton=Button(fram,width=20,text='Quitter',command=fen.quit)
    bouton.grid(padx=15,pady=15)
     
     
    fen.mainloop()
    fen.destroy()
    la méthode .grid(), met en place fram dans fen, alors que .grid pour bouton, met en place bouton dans fram.

    Si tu ne comprend pas les premières lignes de la classe, (je suis pas expert, je débute!), essaie de refaire ton code sans passer par des class
    L'important est de bien comprendre ce que tu code!

    bon courage

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    J'ai compris l'histoire du grid(), j'en suis à 500 lignes de codes

    j'ai voulu minimiser au maximum, mais vu le nombre d'éléments chimiques dans le tableau et avec Tkinter c'est la galère!...et vu le nombre d'heures que j'y ai déjà passé je vais finir comme j'ai commencé (arf)

    en fait mes 3 seuls problèmes sont ceux de mon premier post, j'ai réussi à m'en sortir avec le reste

    pour en revenir à la couleur du fond j'y arrive sans problème tant qu'il n'y a pas de classe, mais là j'ai basé tout mon prog sur une classe...et je me sens pas de modifier plusieurs centaines de lignes!

    je vais faire quelques essais avec une classe sur des scripts beaucoup plus courts, et si j'ai pas d'illumination je resterai avec ce beige monotone et terne...après tout c'est pas si grave, c'est juste moche

    merci

    ps : si quelqu'un a une idée pour mes autres questions, je suis preneur!

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 57
    Points : 71
    Points
    71
    Par défaut
    1er questio pour "°"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # -*- coding: utf8 -*-
     
    from Tkinter import*
    a="°"
    fen =Tk()
    Label(text=a).grid()
    en  =Entry()
    en.grid()
    en.insert(0,a)
    fen.mainloop()
    2emme question, ta trouver
    3emem question, ?????, si tu a utuliser la methode grid() ou pack(), a mon avits c'est imposisble redimosenner les width, sur un agrandissement
    si tu trouver la solustion, tu me dit

    bravos pour les avoir mits des liens de catures d'ecrants

    ++ bnuits

  7. #7
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    pour que cela redimensionne automatiquement tes widgets, quand tu pack il faut utiliser les options expand et fill (par contre, le texte à l'intérieur ne sera pas modifié)

    expand: True ou False - le widget s'étend ou non pour remplir tout l'espace non utilisé dans son parent
    fill: None, X, Y , BOTH - détermine si le widget remplir l'espace supplémentaire qui lui est alloué par le packer
    exemple: un boutton qui prend tout la place de son parent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import Tkinter as Tk
     
    root = Tk.Tk()
    b = Tk.Button(root, text='test')
    b.pack(expand=True,fill=Tk.BOTH)
    root.mainloop()
    pour le grid, il faut que je relise la doc

  8. #8
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    merci, le caractère pour les degrés s'affiche correctement maintenant

    pour ce qui est du redimensionnement je vais chercher (encore) de mon côté pour trouver quelque chose pour le grid (vu que je me suis pas servis du tout de pack)

    en tout cas merci pour l'info, je m'en servirai surement la prochaine fois! à moins que je me mette à wxpython, ça a l'air plus rapide et plus puissant que Tkinter

  9. #9
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Citation Envoyé par Thundie
    merci, le caractère pour les degrés s'affiche correctement maintenant

    pour ce qui est du redimensionnement je vais chercher (encore) de mon côté pour trouver quelque chose pour le grid (vu que je me suis pas servis du tout de pack)

    en tout cas merci pour l'info, je m'en servirai surement la prochaine fois! à moins que je me mette à wxpython, ça a l'air plus rapide et plus puissant que Tkinter
    Tkinter c'est bien pour des applis de tests ou pas trop compliquées.
    Il faut aussi penser à utiliser les appendices à Tkinter ( http://python.developpez.com/outils/Librairies/ ) comme Tix, Pmw, ... qui permettent d'avoir une panel de composants un peu plus riche. Et c'est largement la librairie la plus facile à prendre en main. C'est quand même mieux de commencer par celle-là.

    Pour d'autres libraires: wxPython, GTK, Qt: http://www.developpez.net/forums/vie...fdf17b9e98431c
    avec un bon tuto sur wxPython: http://alain72.developpez.com/tutos/wxPython/

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/05/2014, 10h08
  2. [Tkinter] Taille de fenêtre
    Par loupsolitaire dans le forum Tkinter
    Réponses: 5
    Dernier message: 13/02/2008, 14h24
  3. Couleur caractères d'un champ variable
    Par igour dans le forum Access
    Réponses: 2
    Dernier message: 02/02/2007, 16h13
  4. [Tkinter] couleur de texte
    Par airod dans le forum Tkinter
    Réponses: 2
    Dernier message: 10/05/2006, 10h01
  5. [MFC] Couleur de fenêtre d'origine
    Par Luffy Duck dans le forum MFC
    Réponses: 4
    Dernier message: 26/01/2006, 14h13

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