پنجره اصلی (Top-Level Window)

پنجره اصلی (Top-Level Window)، همان پنجره‌ای است که بقیه عناصر بر روی آن قرار می‌گیرند. این پنجره معادل همان فرم در ویندوز فرم سی شارپ می‌باشد و برای ایجاد آن از کلاس ()Tk استفاده می‌شود:

import tkinter

window = tkinter.Tk()

window.mainloop()

با اجرای برنامه بالا، پنجره اصلی به صورت زیر نمایش داده می‌شود:

برنامه می‌تواند هر تعداد پنجره Top Level داشته باشد. این عنصر دارای خاصیت‌هایی است که می‌توانند به صورت زوج‌های کلید-مقدار که با ویرگول از هم جدا می‌شوند، مورد استفاده قرار گیرند. لیست خاصیت‌های این عنصر در جدول زیر آمده است:

تنظیمات شرح
bg رنگ پس زمینه پنجره را مشخص می‌کند.
bd اندازه خط کناری را بر اساس پیکسل مشخص می‌کند. پیش فرض 0 است.
cursor شکل نشانگر ماوس را زمانی که درون پنجره باشد، مشخص می‌کند.
font فونت پیش فرض برای متن‌هایی که درون این عنصر قرار می‌گیرند.
fg رنگ استفاده شده برای متن و bitmap درون این عنصر را مشخص می‌کند.
height ارتفاع پنجره را مشخص می‌کند.
relief در حالت عادی این نوع پنجره دارای حاشیه سه بعدی در اطراف خود نیست. برای بدست آوردن حاشیه سایه دار، گزینه bd را بیشتر از صفر قرار داده و relief را به یکی از ثابت‌هایش مقداردهی کنید.
Width عرض پنجره را مشخص می‌کند.

برای استفاده از خاصیت‌های بالا، باید آنها را به صورت کلید/مقدار به تابع ()configure مربوط به شیء پنجره اصلی، ارسال کرد:

import tkinter

window = tkinter.Tk()
window.configure(bg="yellow", height='300px', width='300px', cursor="wait")

window.mainloop()

با اجرای برنامه بالا پنجره به صورت زیر تغییر می‌کند:

حال اگر نشانگر ماوس را هم بر روی این پنجره قرار دهید، مشاهده می‌کنید که شکل آن نیز تغییر می‌کند. شیء Top Level دارای توابع زیر می‌باشد:

تابع شرح
()deiconify نمایش پنجره، پس از استفاده از توابع iconify یا withdraw. پنجره را از حالت Minimize یا مخفی در می‌آورد.
()frame شناسه خاص سیستم، برای پنجره را بر می‌گرداند.
()geometry طول و عرض و همچنین موقعیت قرار گیری پنجره در صفحه نمایش را تعیین می‌کند.
group(window) پنجره را به گروه خاصی، که به وسیله window مدیریت می‌شود، اضافه می‌کند.
()iconify پنجره را به صورت یک آیکون در task bar نمایش می‌دهد، که با کلیک بر روی آن، پنجره نمایش داده می‌شود. می‌توان گفت که برای Minimize کردن پنجره به کار می‌رود.
protocol(name,function) ثبت یک تابع به عنوان Callback به منظور فراخوانی برای پروتکل مشخص شده.
()state وضعیت فعلی پنجره را باز می‌گرداند. مقادیر آن شامل: normal ،iconic ،withdrawn و icon است.
transient([master]) تبدیل پنجره به یک پنجره موقت برای master مشخص شده و یا والد پنجره، زمانی که ورودی به آن داده نشود.
()withdraw حذف پنجره از صفحه نمایش، بدون نابود سازی آن.
maxsize(width, height) مشخص کردن حداکثر اندازه برای پنجره.
minsize(width, height) مشخص کردن حداقل اندازه برای پنجره.
positionfrom(who) تعریف کنترل کننده موقعیت
resizable(width,height) مشحص می‌کند که آیا پنجره به وسیله ماوس قابل تغییر اندازه باشد یا نه؟
sizefrom(who) تعریف کنترل کننده اندازه
title(string) تعیین عنوان پنجره

به کد زیر توجه کنید :

import tkinter

window = tkinter.Tk()
window.resizable(False, False)

window.mainloop()

در کد بالا با دادن مقدار False به تابع ()resizable از تغییر اندازه آن جلوگیری کرده‌ایم. یعنی با ماوس نمی‌توان عرض و ارتفاع آن را تغییر داد. برای تعیین عنوان پنجره هم از تابع ()title به صورت زیر استفاده می‌کنیم:

import tkinter

window = tkinter.Tk()
window.resizable(False, False)
window.title("Top Level")

window.mainloop()

با اجرای برنامه، مشاهده می‌کنید که عنوان پنجره به Top Level تغییر می‌کند:

اگر بخواهید که هم اندازه و هم موقعیت پنجره را تغییر دهید، می‌توانید از تابع ()geometry به صورت زیر استفاده کنید:

import tkinter

window = tkinter.Tk()
window.resizable(False, False)
window.title("Top Level")
window.geometry('200x150+500+300')

window.mainloop()

عدد 200 در کد بالا نشان دهنده عرض پنجره، 150، طول پنجره، 500، فاصله عمودی از گوشه بالا و سمت چپ مانیتور و 300 فاصله افقی از گوشه بالا و سمت چپ مانیتور، می‌باشد. شکل عمومی استفاده از این تابع به صورت زیر است:

geometry('wxh±x±y')

برای مخفی کردن پنجره هم از تابع ()withdraw استفاده می‌شود:

import tkinter

window = tkinter.Tk()
window.resizable(False, False)
window.title("Top Level")
window.geometry('200x150+500+300')
window.withdraw()

window.mainloop()