Hinzufügen von Polstern zu einem tkinter-Widget nur auf einer Seite


79

Wie kann ich einem tkinter-Fenster eine Auffüllung hinzufügen, ohne dass tkinter das Widget zentriert? Ich habe es versucht:

 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)

und

 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)

Ich möchte eine 30px-Polsterung nur oben auf dem Etikett.

Antworten:


190

Die Auffülloptionen padxund padydie Methoden gridund packkönnen ein 2-Tupel enthalten , das die Auffüllung links / rechts und oben / unten darstellt.

Hier ist ein Beispiel:

import tkinter as tk

class MyApp():
    def __init__(self):
        self.root = tk.Tk()
        l1 = tk.Label(self.root, text="Hello")
        l2 = tk.Label(self.root, 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()

Interessant. Wird dieses Verhalten irgendwo halboffiziell beschrieben? Meine beiden bevorzugten tk-Ressourcen, effbot und New Mexico Tech , geben keinen Hinweis darauf, dass die Polsterung auf diese Weise ungleichmäßig sein kann. Geheimes undokumentiertes Verhalten?
Kevin

1
@ Kevin: tkinter ist nur ein Python-Wrapper um einen eingebetteten tcl-Interpreter, der die tk-Bibliothek enthält. In den kanonischen Dokumenten für tk wird diese Funktion erwähnt. Hier ist die Referenz: tcl.tk/man/tcl8.5/TkCmd/grid.htm#M16
Bryan Oakley

Funktioniert auf Grid Padx / Pady, aber nicht auf Frame. Wahrscheinlich gibt es noch viele weitere Ausnahmen
Daniel Braun

1
@ DanielBraun: Es funktioniert auch für Frames. Tkinter ist es egal, um welche Art von Widget es sich handelt.
Bryan Oakley

1
@ Giova: Ja, die Tupelversion funktioniert nur für die padxund padyOptionen von gridund pack. Die padxund padyOptionen einiger Widgets sind unterschiedlich. Sie können es nicht für die Option padxund padyfür Widgets verwenden. Ich werde versuchen, meine Antwort zu klären.
Bryan Oakley
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.