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

如果我去除粘性或留下它,我看不出输出的差异。那么粘性如何影响我的代码?

4

2 回答 2

1

要查看差异,您需要给出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此外,您实际上并不需要Buttons 和Frames from tkinter import *,尽管我会明确地将它们列为 infrom tkinter import Button,Frame,Tk或 useimport tkinter as tk和 use tk.Label

于 2019-01-06T08:57:58.000 回答
1

sticky选项告诉 tkinter 如果小部件的空间比需要的多,该怎么办。它告诉 tkinter 小部件需要“粘贴”到空白空间的哪一侧。

在您的情况下,窗口完全适合小部件,因此您不会看到任何区别。

于 2019-01-06T15:07:34.037 回答