2017-05-09 13 views
0

Ich habe ein Programm mit mehreren Frames. Alles funktioniert gut, aber ich kann nicht herausfinden, warum die Grenze um einen der Frames existiert.Python Tkinter Wie entferne ich den Rahmen um einen Rahmen?

Ich habe ein paar Dinge ausprobiert.

Hier ist, wie mein Frame erstellt:

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) 

Ich habe zu ändern versucht:

kwListFrame = Frame(root) 

An:

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

Und danach hat nicht funktioniert Ich habe versucht:

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

Ich habe sogar versucht, das Relief flach zu setzen, auch wenn ich weiß, dass sein Standardwert flach ist.

Da ich mehrere Hinweise zum Entfernen der Grenze auf der Leinwand gefunden habe, habe ich nichts direkt zu Frames bezogen gefunden. So kann ich die highlightthickness und highlightbackground falsch verwenden, aber es hat keinen Fehler geworfen, so dass es scheint, als ob es den Trick tun sollte.

Hier ist ein Bild der Art und Weise, wie der Rahmen oben einen dünnen Rahmen anzeigt.

enter image description here

Ich bin nicht sicher, warum das Problem existiert. Liegt es daran, dass ich ein Bild als Hintergrund verwende?

wollte ich nicht hier mein Code schreiben, weil es zu viel sein würde, aber wenn Sie den vollständigen Code mein Programm auf Github

ist sehen wollen

Antwort

1

Der erste Schritt ist sowohl die borderwidth zu setzen und highlightthickness zu Null. Ein Rahmen hat zwei randähnliche Objekte: den eigentlichen Rahmen und einen "Highlight-Ring". Letzteres dient zum Anzeigen, dass ein Frame den Fokus hat.

Sobald Sie das tun, wird der Rahmen keinen Rahmen haben. Wenn sich um das Widget herum immer noch eine Art border-like Ring befindet, liegt das wahrscheinlich daran, dass das Padding auf den Geometrie-Manager angewendet wurde, und dass Sie die Farbe des übergeordneten Fensters sehen.

In Ihrem speziellen Fall müssen Sie, da Sie ein Etikett in den Rahmen einlegen, auch den Rand des Etiketts ausschalten. Wahrscheinlich sehen Sie den Rand des Etiketts und nicht den Rand des Rahmens.

Ich kann nicht genauer sein, da Sie kein minimales, aber ansonsten voll funktionsfähiges Beispiel angegeben haben, das das Problem veranschaulicht.

+0

Ich habe versucht 'kwListFrame = Frame (root, borderwidth = 0, highlightthickness = 0)' das hat auch nicht funktioniert. Ich habe meinen GitHub für den vollständigen Code verlinkt. Es gab viel zu viel hier zu posten. Ich werde prüfen, ob ich ein Padding habe, das dieses Problem verursacht. –

+0

@ SierrMountainTech: Ich habe meine Antwort aktualisiert. Was Sie sehen, ist wahrscheinlich die Grenze des Labels. –

+0

Vielen Dank dafür. Sie haben Recht, es war der 'Label Border'. Das hat mein Problem behoben. Danke noch einmal. –

Verwandte Themen