2010-11-13 10 views
32

Comment puis-je ajouter un remplissage à une fenêtre tkinter, sans centrer le widget? J'ai essayé:Ajout de remplissage à un widget tkinter uniquement d'un côté

self.canvas_l = Label(self.master, text="choose a color:", font="helvetica 12") 
self.canvas_l.grid(row=9, column=1, sticky=S, ipady=30) 

et

self.canvas_l = Label(self.master, text="choose a color:", font="helvetica 12") 
self.canvas_l.grid(row=9, column=1, rowspan=2, sticky=S, pady=30) 

Je veux padding 30px uniquement sur la partie supérieure de l'étiquette.

Répondre

93

Les options de remplissage padx et pady peuvent prendre un 2-tuple qui représentent la gauche/droite et de haut/bas rembourrage.

Voici un exemple:

import tkinter as tk 

class MyApp(): 
    def __init__(self): 
     self.root = tk.Tk() 
     l1 = tk.Label(text="Hello") 
     l2 = tk.Label(text="World") 
     l1.grid(row=0, column=0, padx=(100, 10)) 
     l2.grid(row=1, column=0, padx=(10, 100)) 

app = MyApp() 
app.root.mainloop() 
+0

Intéressant. Ce comportement est-il décrit de façon semi-officielle? Mes deux ressources tk préférées, [effbot] (http://effbot.org/tkinterbook/grid.htm) et [New Mexico Tech] (http://infohost.nmt.edu/tcc/help/pubs/tkinter/web /grid.html), n'indique pas que le remplissage peut être inégal de cette manière. Comportement secret non documenté? – Kevin

+0

@Kevin: tkinter est juste un wrapper pythonique autour d'un interpréteur tcl intégré qui inclut la bibliothèque tk. Les docs canoniques pour tk mentionnent cette caractéristique. Voici la référence: http://tcl.tk/man/tcl8.5/TkCmd/grid.htm#M16 –