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 :

Cadre gris foncé autour d'un Canvas


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur calcul et simulation
    Inscrit en
    Juin 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur calcul et simulation
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 41
    Par défaut Cadre gris foncé autour d'un Canvas
    Bonjour,

    Afin d'ajouter une scrollbar sur l'ensemble de la fenêtre de mon programme, j'ai placé tous les widgets dans un canvas qui occupe la position 0, 0 (méthode grid), à l'exception bien sûr des scrollbars principales qui se situent dans la fenêtre principale en 1, 0 et 0, 1.

    Le tout fonctionne très bien, mais il y a un défaut : lorsqu'un widget est focus (soit par .focus_set(), soit en cliquant dans un champ de texte par exemple) un cadre d'un gris plus foncé apparait autour du canvas contenant tous les widgets. Ci-dessous des images pour une meilleure compréhension du problème.

    Sans focus :


    Avec un focus sur un bouton :


    Problème annexe : si un widget est vraiment collé au bord du Canvas, ou si on doit utiliser les scrollbars alors le cadre gris foncé est coupé à l'endroit où les widgets dépassent le cadre de la fenêtre, ce qui fait encore moins élégant :


    Je vous joins également le code de base utilisé pour ce GUI:
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    # -*-coding:Utf-8 -*-
    from __future__ import unicode_literals
     
    import Tkinter
    import tkFileDialog
     
    #Fenêtre principale
    class Interface(Tkinter.Tk) :
        def __init__(self, parent) :
            Tkinter.Tk.__init__(self, parent)
            self.parent = parent 
            self.initialize()
     
     
     
    # Creation des widgets
        def initialize(self) :
            self.ascenseur_y = Tkinter.Scrollbar(self, orient=Tkinter.VERTICAL)
            self.ascenseur_x = Tkinter.Scrollbar(self, orient=Tkinter.HORIZONTAL)
            self.ascenseur_y.grid(row=0, column=1, sticky="ns")
            self.ascenseur_x.grid(row=1, column=0, sticky="ew")
     
            self.c = Tkinter.Canvas(self, yscrollcommand=self.ascenseur_y.set, xscrollcommand=self.ascenseur_x.set)
            self.c.grid(row=0, column=0, sticky="news")
     
            self.ascenseur_y.config(command=self.c.yview)
            self.ascenseur_x.config(command=self.c.xview)
     
            self.grid_rowconfigure(0, weight=1)
            self.grid_columnconfigure(0, weight=1)
     
            self.fr = Tkinter.Frame(self.c)
     
        # Bouton ouvir fichier pdf
            self.fr.bouton_oeffnen = Tkinter.Button(self.fr, width=12, text=u"PDF wählen", command=self.ButtonSelectPDF, anchor="center", cursor="hand2")
            self.fr.bouton_oeffnen.grid(column=0, row=0, padx=10, sticky="W")
            self.fr.bouton_oeffnen.bind("<Return>", self.EnterSelectPDF)
            # Ce bouton est selectionne par defaut au lancement du programme
            self.fr.bouton_oeffnen.focus_set()
     
        # Champ de texte pour entrer le lien vers le dossier contenant les photos
            self.fr.pfad = Tkinter.StringVar()
            self.fr.entry_pfad = Tkinter.Entry(self.fr, textvariable=self.fr.pfad, width=50)
            self.fr.entry_pfad.grid(column=0, row=1, columnspan=2, padx=10, sticky="EW")
            # Valeur par defaut dans le champ de texte
            self.fr.pfad.set(u"<Pfad bis zum PDF>")
     
     
     
    # Configuration Lignes/Colonnes
            self.fr.grid_columnconfigure(0, weight=1)
            self.fr.grid_columnconfigure(1, weight=1, minsize=40)
     
            self.fr.grid_rowconfigure(0, weight=1, pad=10)
            self.fr.grid_rowconfigure(1, weight=1, pad=10)
     
     
            self.c.create_window(0, 0,  window=self.fr)
            self.fr.update_idletasks()
            self.c.config(scrollregion=self.c.bbox("all"))
     
     
    # Fonctions associées aux widgets
        def ButtonSelectPDF(self) :
            """ Ouvre le fichier pdf """
            self.fr.pfad.set(tkFileDialog.askopenfilename(title=u"PDF wählen, dann OK anklicken",filetypes=[('PDF-Files','.pdf')]))
     
        def EnterSelectPDF(self, event) :
            """ Ouvre le fichier pdf ; cf ci-dessus"""
            self.ButtonSelectPDF()
     
     
     
    # Hauptfenster wird gebaut
    if __name__ == "__main__" :
        app = Interface(None)
        app.title(u"Kämmerer AG")
        app.mainloop()
    Est-ce que quelqu'un saurait comment faire en sorte que ce cadre n'apparaisse plus ?

    Merci d'avance

  2. #2
    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,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.c = Tkinter.Canvas(self, ..., highlightthickness=0)
    @+

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur calcul et simulation
    Inscrit en
    Juin 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur calcul et simulation
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 41
    Par défaut
    En effet, merci beaucoup.

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

Discussions similaires

  1. Cadres de couleur autour des calques
    Par TOSSS dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 13/10/2009, 14h14
  2. Fond gris fonce sur wxFrame
    Par pada51 dans le forum wxWidgets
    Réponses: 2
    Dernier message: 06/09/2007, 11h44
  3. Splash Screen : Cadre gris à la place de l'image
    Par LinoaHeart dans le forum AWT/Swing
    Réponses: 17
    Dernier message: 20/06/2007, 11h14
  4. [script]adobe flash cadre gris proces eolas
    Par joe206 dans le forum Flash
    Réponses: 3
    Dernier message: 22/05/2006, 17h40
  5. Contour des lettres en gris foncé
    Par pihug12 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 18
    Dernier message: 18/10/2005, 05h53

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