با سلام بهنام صباغی هستم با اموزش gui در پایتون با کتابخانه tkinter توی این قسمت میخوام براتون در مورد پنجره ها اضافی صحبت کنم که بهشون Toplevel میگند خب اول اینو بگم که این ابزار رو ttk پشتیبانی نمیکنه مثل پنجره ی روتمون درواقع همه چیزش شبیه اونه بجر ایجاد کردنش خب برای ایجادش اینطوری عمل میکنیم
window=Toplevel(root)
دقت کنید این ابزار مثل همه ی ابزار های دیگه یه parent (خانواده ) داره که اینجا همون روت نوشتم یعنی پنجره ی اصلی که همیشه ایجاد میکنیم این دقیقا یه پنجرست مثل پنجره ی قبلیمون (root) و وقتی روت نابود بشه این پنجره هم نابود میشه ولی وقتی این پنجره نابود بشه برای روت اتفاقی نمیافته میشه از این پنجره برای نشون دادن پیغام استفاده کرد یا هر کار دیگه ای که با روت انجام میدادیم چون دقیقا این هم مثل همونه خب کد زیر رو ببینید

from tkinter import *

root=Tk()

window=Toplevel(root)
window.title('New Window')
توضیح نیاز نداره پس میدمسراغ ادامش شاید شما بخواید این پنجرتون زیر پنجره ی مثلا روت نمایش داده یشه اینجا باید از تابع lower استفاده کنید و برای بالاتر نشون دادن هم از تابع lift استفاده میکنیم اگر بدون ورودی بنویسیموشن تا نهایت کارشون رو انجام میدند مثلا lower میبرتش پایین ترنی پنجره و lift میبرتش بالاترین پنجره و اگر بخوایم ورودی بدیم اسم پنجره ای که میخوایم روش اعمال بشه مثلا برای تابع lift میخوایم پنجره ی یکمون بره زیر پنجره ی دو مینویسیم
w1.lift(w2)
حالا اینبار کد زیر رو اجرا کنید ببینید چی میشه
#***********************CODE*****************************************
from tkinter import *

root=Tk()

window=Toplevel(root)
window1=Toplevel(root)
window.title('New Window')

window.lower()

window1.lift(root)

خب حالا state رو میگم برای حالت بکار میره و میتوینم یک ورودی بدیم ورودی ها توی زیر هست بخونید فقط یادتون باشه باید به صورت استرینگ بدید ورودی رو
zoomed = برای فول اسکرین کردن هست نمیدونم چرا توی لینوکس کار نمیکنه
normal = برای حالت نرمال هست
 withdrown = برای مخفی کردن کلی پنجره هست
iconic = برای مینیمایز کردن پنجره هست
نحوهی استفاده مثلا برای iconic اینطوریه
window.state('iconic')
البته برای ایکونیک کردن و در اوردن از این حالت دوتا تابع جدا نوشتند چون زیاد کاربرد داره دوتاشون رو در زیر مینویسم براتون اولی مینیمایز میکنه دومی از مینیمایز در میاره
window.iconify()

window.deiconify()
خب اینم از استیت حالا شاید شما دلتون بخواد اندازه و مکان نمایش پنجره رو خودتون تنظیم کنید خب بای این کار تابع geometry نوشته شده که ورودیش یه استرینگه به صورت
'widthxheight + x + y '
طو و عورض با علامت x در هم ضرب میشند و اوندوتا هم که ایکس و ایگرگ گوشه ی سمت چپ بالای صفحه هستند بعلاوه میشند مثال زیر رو ببینید
window.geometry('600x800+600+600')
توی این مثال پنجرم به طول 600 و عرض 800 و گوشه ی سمت چپ بالاش توی موقعیت x و y   به طول 600 نشون داده میشه
اگر نخواید کابر بتونه پنجرتون رو تغییر اندازه بده باید از تابع resizable استفاده کنیم به صورت زیر
window.resizable(False,Fale)
من هردو ورودیش رو فالی دادم شما میتونید true و  یا false بدید اولی ایکس رو میگه یعنی طول پنجرتون قابل تغییر باشه یا نه و دومی در مورد عرض هست حالا ممکنه بخواید کاربر بتونه توی یه محدوده ی خاض پنجرتون رو تغییر اندازه بده مثلا بزرگتر از فلان اندازه نشه یا مثلا کوچیکتر از فلان اندازه نشه یا بتونه بین دوتا اندازه تغییر بده اینجا از تابع های minsize و maxsize استفاده میشه به صورت زیر نوشته میشند
from tkinter import *

root=Tk()

window=Toplevel(root)
window1=Toplevel(root)
window.title('New Window')

window.lower()


window.geometry('600x800+600+600')



window.minsize(400,400)
window.maxsize(600,400)
و در اخر برای بستن هر پنجره میتونید از destroy استفاده کنید فقط حواستون باشه وقتی پنجره ای رو دیستروی میکنید همه ی زیر شاخه هاش هم نابود میشند مثلا برای بستن پنجره از
window.destroy()
استفاده میشه کد زیر رو ببینید
from tkinter import *

root=Tk()

window=Toplevel(root)

window.title('New Window')

window.lower()


window.geometry('600x800+600+600')



window.minsize(400,400)
window.maxsize(600,400)

window.destroy()

خب اینجا ما در اخر پنجره رو بستیم