2017-05-09 1 views
0

J'ai un programme avec plusieurs images. Tout fonctionne bien mais je n'arrive pas à comprendre pourquoi la bordure autour d'un des cadres existe.Python Tkinter Comment supprimer la bordure autour d'un cadre?

J'ai essayé quelques petites choses.

Voici comment mon cadre est créé:

kwListFrame = Frame(root) 
kwListFrame.grid(row = 1, column = 0, rowspan = 1, columnspan = 1, sticky = N+S+E+W) 
kwListFrame.columnconfigure(0, weight=1) 
kwBGimage = Label(kwListFrame, image= baseBGimage) 
kwBGimage.image = baseBGimage 
kwBGimage.place(x = 0, y = 0) 
kwBGimage.config(image = baseBGimage) 

J'ai essayé de changer:

kwListFrame = Frame(root) 

Pour:

kwListFrame = Frame(root, highlightthickness=0) 
#or 
kwListFrame = Frame(root, padx=0, pady=0) 
#or 
kwListFrame = Frame(root, bd=0) 

Et après cela ne fonctionnait pas, j'ai essayé:

kwListFrame = Frame(root, highlightbackground= "some color that matches frame") 

J'ai même essayé de mettre le relief à plat même si je sais que sa valeur par défaut est plate.

Comme j'ai trouvé plusieurs références à la suppression de la bordure sur la toile, je n'ai rien trouvé concernant Frames directement. Donc, je peux utiliser le highlightthickness et highlightbackground mauvais, mais il n'a pas jeté une erreur, donc il semble que cela devrait faire l'affaire.

Voici une image de la façon dont le cadre affiche une fine bordure en haut.

enter image description here

Je ne sais pas pourquoi le problème existe. Est-ce parce que j'utilise une image comme arrière-plan?

Je ne voulais pas poster tout mon code ici parce que ce serait bien, mais si vous voulez voir le code complet de mon programme est sur Github

Répondre

1

La première étape consiste à définir à la fois la borderwidth et highlightthickness à zéro. Un cadre a deux objets de type bordure: la bordure actuelle et un "anneau de surbrillance". Ce dernier est pour montrer qu'un cadre a l'accent.

Une fois que vous faites cela, le cadre n'aura pas de bordure. S'il y a encore une sorte d'anneau de bordure autour du widget, cela est probablement dû au remplissage appliqué au gestionnaire de géométrie, et ce que vous voyez est la couleur de la fenêtre parent.

Dans votre cas spécifique, étant donné que vous placez une étiquette dans le cadre, vous devez également désactiver la bordure de l'étiquette. Très probablement, vous voyez la bordure de l'étiquette plutôt que la bordure du cadre.

Je ne peux pas être plus précis puisque vous n'avez pas fourni un exemple minimal mais par ailleurs complet qui illustre le problème.

+0

J'ai essayé 'kwListFrame = Cadre (root, borderwidth = 0, highlightthickness = 0)' cela ne fonctionnait pas non plus. J'ai lié mon github pour le code complet. Il y avait beaucoup de choses à poster ici. Je vais vérifier si j'ai un rembourrage qui causerait ce problème. –

+0

@SierrMountainTech: J'ai mis à jour ma réponse. Ce que vous voyez est probablement la limite de l'étiquette. –

+0

Merci pour cela. Vous avez raison, c'était la 'Label Border'. Cela a réglé mon problème. Merci encore. –