يُعد التحكم في حجم نوافذ Tkinter أمرًا بالغ الأهمية لخلق تجربة مستخدم مُحسّنة. في بعض الأحيان، تحتاج إلى نافذة تبقى بحجم ثابت، مما يمنع التغيير العرضي في الحجم. يُوضح هذا الدليل طريقتين فعالتين لتحقيق ذلك.
محتويات
- الطريقة الأولى: استخدام طريقة
resizable()
- الطريقة الثانية: استخدام طريقة
wm_attributes()
- الخلاصة
- الأسئلة الشائعة
الطريقة الأولى: استخدام طريقة resizable()
تُوفر طريقة resizable()
أبسط وأكثر الطرق مباشرة. فهي تسمح بالتحكم الدقيق في التغيير الأفقي والرأسي للحجم. يؤدي تعيين كلتا الوسيطتين إلى False
إلى قفل حجم النافذة بشكل فعال.
import tkinter as tk
root = tk.Tk()
root.geometry("400x300") # تعيين حجم النافذة الأولي
root.resizable(False, False) # تعطيل تغيير الحجم
# ... رمز Tkinter الخاص بك ...
root.mainloop()
يقوم هذا الكود أولاً بإنشاء النافذة الرئيسية باستخدام tk.Tk()
ويُعيّن أبعادها الأولية باستخدام root.geometry("400x300")
. السطر الرئيسي، root.resizable(False, False)
، يُعطل تغيير الحجم في كلا الاتجاهين x (الأفقي) و y (الرأسي). تُوصى بهذه الطريقة لوضوحها وموثوقيتها.
الطريقة الثانية: استخدام طريقة wm_attributes()
تُوفر طريقة wm_attributes()
تحكمًا أوسع في سمات النافذة، بما في ذلك تغيير الحجم. على الرغم من أنها أقل وضوحًا لمجرد تعطيل تغيير الحجم، إلا أن فهمها قيم لفهم إدارة النوافذ الأكثر تقدمًا.
import tkinter as tk
root = tk.Tk()
root.geometry("400x300")
root.wm_attributes('-toolwindow', True)
# ... رمز Tkinter الخاص بك ...
root.mainloop()
يؤدي تعيين '-toolwindow'
إلى True
غالبًا إلى منع تغيير الحجم، لكن سلوكه قد يختلف عبر أنظمة التشغيل ومديري النوافذ المختلفة. قد يُغيّر أيضًا مظهر النافذة بشكل طفيف. بسبب هذا التناقض المحتمل والآثار الجانبية غير المقصودة، يُفضّل استخدام resizable()
بشكل عام لإصلاح حجم النافذة ببساطة.
الخلاصة
يمكن لكلتا الطريقتين تجميد حجم نافذة Tkinter. ومع ذلك، يُنصح بشدة باستخدام طريقة resizable()
لبساطتها ووضوحها وموثوقيتها عبر الأنظمة الأساسية. استخدم wm_attributes()
فقط عندما تحتاج إلى تحكم متزامن في سمات النافذة الأخرى وتفهم الاحتمال لوجود اختلافات خاصة بالمنصة.
الأسئلة الشائعة
- س: لا تزال نافذتي قابلة للتغيير في الحجم بعد استخدام
resizable(False, False)
.
ج: تأكد من استدعاءresizable(False, False)
*بعد* تعيين هندسة النافذة باستخدامgeometry()
. الترتيب مهم. أيضًا، قد يتجاوز بعض مديري النوافذ هذا الإعداد. - س: ما هي العيوب المحتملة لـ
wm_attributes('-toolwindow', True)
؟
ج: قد يختلف مظهر النافذة وسلوكها عبر أنظمة التشغيل ومديري النوافذ. قد لا يتم دعمه بشكل ثابت على جميع المنصات. - س: هل يمكنني تغيير حالة قابلية التغيير في الحجم بعد إنشاء النافذة؟
ج: نعم، يمكنك استدعاءresizable()
في أي نقطة في رمزك لتغيير حالة قابلية التغيير في الحجم.