>>> Let's run Python on Mobile

วันพุธ, กันยายน 28, 2548

การจัดเรียง widget ด้วย .pack()

Python for PocketPC
การจัดเรียง widget ใน root window สามารถทำได้โดยใช้ กลุ่มคำสั่ง ที่เรียกว่า Geometry Manager (ได้แก่ .pack() .grid() และ .place())
Tkinter ใน Python ให้ความสำคัญกับ การทำGeometry Manager ค่อนข้างมาก
โดยแต่ละ widget ต้องเรียกคำสั่ง Geometry Manager ให้เรียบร้อยเสียก่อน จึงจะปรากฏบน screen ให้เห็นได้
คำสั่งหนึ่งใน Geometry Manager ที่ได้มีการใช้ให้เห็น ไปบ้างแล้ว คือคำสั่ง pack()
เช่นถ้าเรามี widget ชื่อ button01 แล้วจะเรียกคำสั่ง pack() ก็ใช้ว่า
button01.pack()
หรือสามารถเรียก คำสั่ง pack() ได้ตั้งแต่ ช่วงสร้าง widget เลยก็ได้ เช่น
button01=Tkinter.Button(text=u'something').pack()
ลองมาดูตัวอย่าง code เต็มๆกัน
import sys
sys.path.append('\\Storage Card\\Python\\Lib\\python23.zip\\lib-tk')
import Tkinter
root=Tkinter.Tk()
root.title(u'tk05')
button01=Tkinter.Button(text=u'something').pack()
button02=Tkinter.Button(text=u'anything').pack()
button03=Tkinter.Button(text=u'nothing').pack()
button04=Tkinter.Button(text=u'another').pack()
root.mainloop()



ลองเปลี่นขนาด-ตำแหน่ง

(คุณสามารถคลิกที่ Tk root window เพื่อย้ายตำแหน่ง เปลี่ยนขนาดได้ คล้ายๆกับ Windows บน PC)
จะเห็นว่า แต่ละ button ขนาดไม่เท่ากัน เกาะรวมอยู่ด้านบน
คุณสามารถเพิ่ม option ต่างๆ ให้คำสั่ง pack() เช่น
side ทำให้ widget ไปเรียงชิดขอบ
side อาจจะกำหนดให้เท่ากับ 'top' ,'left' ,'right' หรือ 'buttom'
(by default ถ้าไม่กำหนด option side ไว้ จะถือว่า side='top')
ดังตัวอย่าง
import sys
sys.path.append('\\Storage Card\\Python\\Lib\\python23.zip\\lib-tk')
import Tkinter
root=Tkinter.Tk()
root.title(u'tk06')
button01=Tkinter.Button(text=u'something').pack(side='top')
button02=Tkinter.Button(text=u'anything').pack(side='left')
button03=Tkinter.Button(text=u'nothing').pack(side='right')
button04=Tkinter.Button(text=u'another').pack(side='bottom')
root.mainloop()


ถ้าอยากจะให้ widget แผ่ไปตามแนวซ้าย-ขวา จนเต็ม root window ก็ใช้ option
fill='x'
เช่น
button01=Tkinter.Button(text=u'something').pack(fill='x')
ดังตัวอย่าง
import sys
sys.path.append('\\Storage Card\\Python\\Lib\\python23.zip\\lib-tk')
import Tkinter
root=Tkinter.Tk()
root.title(u'tk07')
button01=Tkinter.Button(text=u'something').pack(fill='x')
button02=Tkinter.Button(text=u'anything').pack(fill='x')
button03=Tkinter.Button(text=u'nothing').pack(fill='x')
button04=Tkinter.Button(text=u'another').pack(fill='x')
root.mainloop()



ตัวอย่าง code
tk05.zip
tk06.zip
tk07.zip

หน้าถัดไป>>>
กลับไปหน้าหลัก<<<
หน้าก่อน