Как команда sticky влияет на код Python в Tkinter? - PullRequest
0 голосов
/ 06 января 2019
from tkinter import *
from tkinter import ttk

root = Tk()

root.rowconfigure(0,weight = 1)
root.columnconfigure(0,weight = 1)

frame = ttk.Frame(root)
frame.grid(row = 0,column =0)

ttk.Label(frame,text = 'Label_1').grid(row=0,column=0,sticky='nsew')
ttk.Button(frame,text = 'Button').grid(row=0,column=1,sticky='nwse')
ttk.Label(frame,text = 'Label_2').grid(row=0,column=2,sticky='nwes')

root.mainloop()

Я не вижу четкой разницы в выходных данных, если я уберу клейкую ленту или оставлю ее. Так как же это влияет на мой код?

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Опция sticky сообщает tkinter, что делать, если для виджета больше места, чем необходимо. Он сообщает tkinter, к каким сторонам пустого пространства должен «прилипать» виджет.

В вашем случае окно точно соответствует виджету, поэтому вы не увидите никакой разницы.

0 голосов
/ 06 января 2019

Чтобы увидеть разницу, вам нужно указать tkinter причину, по которой ячейка не помещается точно вокруг вашего виджета, что всегда будет по умолчанию, если это возможно. Попробуйте:

from tkinter import *
from tkinter import ttk

root = Tk()

root.rowconfigure(0,weight = 1)
root.columnconfigure(0,weight = 1)

frame = ttk.Frame(root)
frame.grid(row = 0,column =0)

ttk.Label(frame,text = 'Label_1',background='red').grid(row=0,column=0,sticky='nwes')
ttk.Button(frame,text = 'Button').grid(row=0,column=1,sticky='nwse')
ttk.Label(frame,text = 'Label``_2').grid(row=0,column=2,sticky='nwes')
ttk.Label(frame,text = 'LOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG').grid(row=1,column=0)
root.mainloop()

и затем удалите ,sticky='news' из Label_1. Обратите внимание, что центрирование текста и центрирование виджетов - это две разные вещи, поэтому я дал цвет фона, чтобы он был очевиден.

Кроме того, вам на самом деле не нужны ttk, вы уже получаете Button s и Frame s от from tkinter import *, хотя я бы явно перечислил их как в from tkinter import Button,Frame,Tk или использовал import tkinter as tk и использовал бы tk.Label.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...