2017-10-17 2 views
0

Le code suivantSupprimer la bordure de l'étiquette Tkinter

from tkinter import * 
window=Tk() 
lbl=Label(window,width='30',height='15',relief='solid') 
lbl.pack() 
window.mainloop() 

produit this

Est-il possible d'enlever la frontière d'un seul côté?

+1

Il n'y a pas mais vous pouvez placer votre créer un cadre avec une étiquette à l'intérieur dudit cadre et l'utiliser pour créer la bordure. C'est un peu plus avancé mais ça peut être fait. –

Répondre

1

En utilisant un exemple sur un Q/A here (j'aurais lié à lui comme une double question, mais il faut un peu tweeking de comparer à cette question de l'OP.)

Nous pouvons créer ce qui ressemble à une étiquette une bordure sur 3 côtés et un côté sans.

from tkinter import * 

class MyLabel(Frame): 
    def __init__(self, parent, myborderwidth=0, mybordercolor=None, 
       myborderplace='center', *args, **kwargs): 
     Frame.__init__(self, parent, bg=mybordercolor) 
     self.propagate(False) 
     self.label = Label(self, *args, **kwargs) 

     if myborderplace is 'left': 
      self.label.pack(side='right') 
     elif myborderplace is 'right': 
      self.label.pack(side='left') 
     else: 
      self.label.pack() 
      myborderwidth = myborderwidth * 2 

     self.config(width=self.label.winfo_reqwidth() + myborderwidth) 
     self.config(height=self.label.winfo_reqheight() + myborderwidth) 

root=Tk() 
root.geometry("50x50") 
root.rowconfigure(0, weight=1) 
root.columnconfigure(0, weight=1) 

MyLabel(root, text='Hello World', myborderwidth=2, mybordercolor='black', 
     myborderplace='right').grid() 

root.mainloop() 

Résultats:

enter image description here

+0

Le processus serait-il plus simple en utilisant Canvas au lieu de Label? –

+0

@NafRose Eh bien, je ne suis pas sûr. Je devrais essayer et écrire un exemple. Vous pouvez essayer et voir jusqu'où vous arrivez. –

0

Si je toile au lieu de l'étiquette, je peux faire une bordure sur trois côtés en créant des lignes par les bords. code Exemple:

from tkinter import * 
root=Tk() 
canvas=Canvas(height='250',width ='250') 
canvas.create_line(251,0,251,251,width=2,fill='black') 
canvas.create_line(3,3,251,3,width=2,fill='black') 
canvas.create_line(3,251,252,251,width=2,fill='black') 
canvas.pack() 
root.mainloop() 

qui Ouputs this

Il pourrait y avoir des moyens plus pratiques si.