ایجاد ساختار با pack

  • مدرس: علی بیگدلی
  • تاریخ انتشار: Aug 26, 2020

برای ایجاد قالب دلخواه و همچنین انطباق پذیر می توانید از دو روش برای دسته بندی المان های صفحه استفاده نمایید که یکی با استفاده از pack هستش و دیگری با استفاده از grid که تا اینجا با pack آشنا شدید و در قسمت های بعدی با grid و دسته بندی geometry آشنا خواهید شد. اما در رابطه با pack می بایست یکسری آپشن هایی که می توانید با این متد اجرایی کنید را بشناسید که در زیر به مواردی از آن اشاره خواهیم کرد و در نهایت با ذکر نمونه هایی نحوه Align کردن المان ها را نشان خواهیم داد. متد pack در واقع پس از تعریف المان و بر object آن اعمال می شود و به شکل زیر صورت میگیرد.


 
widget.pack(**Options)

که این آپشن ها شامل:

  • anchor جایگاهی که ویدجت می بایست قرار بگیرد که به صورت پیشفرض CENTER است. اما مواردی دیگری همچون n, ne, e, se, s, sw, w, nw, or center را نیز شامل می شود.
  • expand بیانگر این است که آیا ویدجت اجازه پوشش کامل سطح را در ناحیه طول دارد یا نه که به صورت پیشفرض False است.
  • fill بیانگر این است که آیا ویدجت مورد نظر می تواند تمام فضایی که پنجره مادر در اختیارش می گذارد را پر کند یا خیر که می تواند فقط شامل طول یا عرض و یا هر دو باشد که می توانید با موارد Y برای عرض , X برای طول و BOTH برای هر دو جهت استفاده کنید.
  • in پک کردن ویدجت مورد نظر درون ویدجت دیگر
  • ipadx برای padding یا فاصله گذاری درونی در جهت طول استفاده می شود که به صورت پایه 0 است.
  • ipady برای padding یا فاصله گذاری درونی در جهت عرض استفاده می شود که به صورت پایه 0 است.
  • padx برای padding یا فاصله گذاری خارجی در جهت طول استفاده می شود که به صورت پایه 0 است.
  • pady برای padding یا فاصله گذاری خارجی در جهت طول استفاده می شود که به صورت پایه 0 است.
  • side بیانگر این است که به کدام سمت ویدجت قرار بگیرد LEFT,TOP,BOTTOM,RIGHT از مدل هایی است که می توان برای این آپشن در نظر گرفت. اما به صورت پیشفرض به Frame مادر نگاه می کند.

نکات:

  • pack_configure() در واقع همان متد pack است که استفاده می کنید منتهی با نامی دیگر
  • pack_forget() از این متد برای حذف تمام تنظیمات اعمال شده استفاده می شود و آیتم را از صفحه حذف می کند
  • pack_info() برای گرفتن یک دیکشنری از تمام تنظیمات اعمال شده بر روی آن ویدجت استفاده می شود.
  • pack_propagate(flag) متدی برای تغییر سایز بر اساس ورودی های روی ویدجت البته این متد باید بر روی ویدجت مادر صورت گیرد.
  • pack_slaves() یک لیست از تمام ویدجت هایی که توسط ویدجت مادر نگه داری می کند را بر می گرداند

در زیر مثالی برای ایجاد المان ها و جایگذاری آن ها در نقاط مختلف صفحه تعبیه شده است. کد نمونه:

#importing libraries
from tkinter import *

#inserting items in list_box
def insert_element():
    list_box.insert(END,name_entry.get())

#function to clear all the data in list_box
def clear_box():    
    list_box.delete(0,END)

# building a window
window = Tk()

#adding window title
window.title("icc-aria gui app")

#making a new fram for holding items in bottom
bottomframe = Frame(window)
bottomframe.pack( side = BOTTOM )

#making a new frame for holding items in middle
middleframe = Frame(window)
middleframe.pack( side = TOP )

#making a label for hint
Label(middleframe,text="enter anything and press send").pack(side=TOP,padx=5,pady=10)

#an entry for giving the elements we want to add
name_entry = Entry(middleframe)
name_entry.pack(side=LEFT)

#a button to send the entries to listbox
send_btn = Button(middleframe,text="send to box",command=insert_element)
send_btn.pack(side=LEFT,anchor=CENTER)

#a button to clear all the contents in box
send_btn = Button(bottomframe,text="clear the box",command=clear_box)
send_btn.pack(side=BOTTOM,anchor=CENTER ,expand=True)

#creating a list box for elements
list_box = Listbox(bottomframe)
list_box.pack(side=TOP ,expand=True)



#creating the loop for the program
window.mainloop()

نمونه خروجی:

 

ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
captcha
0دیدگاه