import Tkinter as tk
window = tk.Tk()
window.title('My Window')
window.geometry('500x300')
#pack
#常用的pack(), 多數按照上和西的方式排列,不指定時默認為上。
tk.Label(window,text='123nihao你好',fg='red').pack(side='top') # 上
tk.Label(window,text='123nihao你好',fg='red').pack(side='bottom') # 下
tk.Label(window,text='123nihao你好',fg='red').pack(side='left') # 左
tk.Label(window,text='123nihao你好',fg='red').pack(side='right') # 右
tk.Label(window,text='123nihao你好',fg='red').pack(anchor='n') # 北,效果同上
tk.Label(window,text='123nihao你好',fg='red').pack(anchor='s') # 南,效果同上
tk.Label(window,text='123nihao你好',fg='red').pack(anchor='w') # 西
tk.Label(window,text='123nihao你好',fg='red').pack(anchor='e') # 東
可以體會下這兩種的不同表現:
for i in range(3):
tk.Radiobutton(window, text=i).pack(anchor='w') #按行追加,前三行依次靠西生成3個按鈕
for i in range(3):
tk.Radiobutton(window, text=i).pack(side='left') #同一行追加,中間一行依次靠上一按鈕生成3個按鈕
#grid
#以規律的方格形式呈現。比如下面的代碼就是創建一個三行三列的表格:參數row 為行,colum 為列,padx 單元格左右間距,pady單元格上下間距,ipadx單元格內部元素與單元格的左右間距,ipady單元格內部元素與單元格的上下間距。
for i in range(3):
for j in range(3):
l=tk.Label(window,text='123nihao你好',bg='yellow',font=('Arial', 12), width=10, height=2)
l.grid(row=i, column=j, padx=5, pady=10, ipadx=1, ipady=20)
#place
#用精確的坐標來定位,參數anchor='nw'表示錨定點是西北角。
tk.Label(window, text='Pl', font=('Arial', 20), ).place(x=20, y=100, anchor='nw')
tk.Label(window, text='Pl', font=('Arial', 20), ).place(x=20, y=200, anchor='nw')
tk.Label(window, text='Pl', font=('Arial', 20), ).place(x=80, y=100, anchor='nw')
tk.Label(window, text='Pl', font=('Arial', 20), ).place(x=80, y=200, anchor='nw')
window.mainloop()
注意
3種方式不要混在一起同時執行,會導致程序卡掉,暫不清楚原因。
3種方式都支持兩行並一行:
w=tk.Label(window,text='123mn你好',fg='red')
w.pack(side='top')
等於:
tk.Label(window,text='123mn你好',fg='red').pack(side='top')
但是:
tk.Label(window,text='123mn你好',fg='red').pack(side='top') # 上
tk.Label(window,text='123mn你好',fg='red').pack(side='bottom') # 下
會表示為2個Label部件。
w=tk.Label(window,text='123mn你好',fg='red')
w.pack(side='top')
w.pack(side='bottom')
卻只表示1個Label部件,只取最后的bottom。
w=tk.Label(window,text='123mn你好',fg='red')
w.pack(side='top')
w=tk.Label(window,text='123mn你好',fg='red')
w.pack(side='bottom')
這樣寫就能表示2個Label部件。
綜合來看,多個部件時還是一行的寫法更方便。
