Python GUI Programming

تثبيت حجم نوافذ Tkinter

Spread the love

يُعد التحكم في حجم نوافذ Tkinter أمرًا بالغ الأهمية لخلق تجربة مستخدم مُحسّنة. في بعض الأحيان، تحتاج إلى نافذة تبقى بحجم ثابت، مما يمنع التغيير العرضي في الحجم. يُوضح هذا الدليل طريقتين فعالتين لتحقيق ذلك.

محتويات

الطريقة الأولى: استخدام طريقة 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() في أي نقطة في رمزك لتغيير حالة قابلية التغيير في الحجم.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *