Додавання відступу до віджету tkinter лише з одного боку


83

Як я можу додати відступ до вікна tkinter, не відцентруючи віджет tkinter? Я намагався:

 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)

і

 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)

Я хочу, щоб відступ до 30 пікселів був лише у верхній частині етикетки.

Відповіді:


197

Оббивка варіанти padxі padyз gridі packметоди можуть взяти 2-кортеж , які представляють лівий / правий і верхній / нижній відступи.

Ось приклад:

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()

Цікаво. Чи описана така поведінка де-небудь напівофіційно? Два мої улюблені ресурси tk, effbot та New Mexico Tech , не дають жодного натяку на те, що таким чином заповнення може бути нерівномірним. Секретна недокументована поведінка?
Кевін

1
@Kevin: tkinter - це просто пітонічна обгортка навколо вбудованого інтерпретатора tcl, який включає бібліотеку tk. Канонічні документи для tk згадують про цю функцію. Ось посилання: tcl.tk/man/tcl8.5/TkCmd/grid.htm#M16
Bryan Oakley

Працює на Grid padx / pady, але не на Frame. Можливо, існує набагато більше винятків
Даніель Браун,

1
@DanielBraun: це буде працювати і для кадрів. Ткінтеру байдуже, який це віджет.
Брайан Оклі

1
@Giova: так, версія кортежу працює тільки для padxі padyваріантів gridі pack. В padxі padyваріанти деяких віджетів різні. Ви не можете використовувати його для віджетів padxі padyопції. Спробую уточнити свою відповідь.
Bryan Oakley
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.