كيفية إيقاف إطار Tkinter من الانكماش لتناسب محتوياته؟

StackOverflow https://stackoverflow.com/questions/563827

  •  05-09-2019
  •  | 
  •  

سؤال

هذا هو الرمز الذي يعطيني مشكلة.

f = Frame(root, width=1000, bg="blue")
f.pack(fill=X, expand=True)

l = Label(f, text="hi", width=10, bg="red", fg="white")
l.pack()

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

هل كانت مفيدة؟

المحلول

بشكل افتراضي، إطارات TK يتقلص أو ينمو لتناسب محتوياتها, ، وهذا ما تريد 99٪ من الوقت. المصطلح الذي يصف هذه الميزة هو "نشر الهندسة". هناك أمر لتحويل نشر الهندسة أو إيقاف تشغيلها عند استخدام packواحد مماثلة بالنسبة grid).

نظرا لأنك تستخدم حزمة، فإن بناء الجملة سيكون:

f.pack_propagate(0)

أو ربما root.pack_propagate(0), ، اعتمادا على القطعة (القطعة) التي تريد التأثير عليها بالفعل. ومع ذلك، نظرا لأنك لم تمنح ارتفاع الإطار، فإن الارتفاع الافتراضي هو 1 بكسل حتى لا تزال قد لا ترى الحاجيات الداخلية. للحصول على التأثير الكامل لما تريده، تحتاج إلى إعطاء الإطار المحتوي على كل من العرض والارتفاع.

التي يقال، الغالبية العظمى في الوقت الذي يجب أن تدع tkinter يحسب الحجم. عند تشغيل نشر الهندسة، لن يستجيب GUI الخاص بك جيدا للتغييرات في الحل أو التغييرات في الخطوط، إلخ.pack, place و grid) قوية بشكل ملحوظ. تعلم كيفية الاستفادة من هذه القوة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top