سؤال

أنا بحاجة إلى استخدام Gtk2 للمشروع.سوف تكون باستخدام بيثون/روبي لذلك.المشكلة هي أن التعبئة يبدو نوع من الصوفية إلى علي.حاولت استخدام VBox بحيث يمكن أن يكون الحاجيات التالية في نافذة ( في الترتيب التالي ):

  • القوائم
  • شريط الأدوات
  • عرض النص/محرر التحكم

لقد تمكنت من "تخمين" طريقي مع pack_start والحصول على تخطيط أريد, ولكن أود أن تكون قادرة على فهم ذلك.الوثائق في روبي Gtk2 يبدو أيضا طريقة unintuitive (وذلك هو بيثون, لأنه هو نفسه فقط مكتوب بيثون), هل يمكن أن تلقي بعض الضوء ؟

أيضا ، set_size_request لا تعمل دائما عندما أقوم بإضافة مكون مع pack_start.لماذا هذا ؟

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

المحلول

مربع التعبئة حقا بسيطة, لذلك ربما عدم فهم ذلك لأن كنت أتصور أنه أكثر تعقيدا مما هو عليه.

تخطيط إما الرأسي (مثل كومة من الطوب) أو أفقي (مثل طابور من الناس).كل عنصر في هذا التخطيط يمكن توسيع أو أنه لا يمكن التوسع.

أفقي (HBox)

[widget][widget][widget][widget]

العمودي (VBox)

[widget]
[widget]
[widget]
[widget]

لذلك على سبيل المثال ، تخطيط أفقي (HBox) مع اثنين من الأزرار التي سوف يكون رمز:

import gtk
box = gtk.HBox()
b1 = gtk.Button('button1')
b2 = gtk.Button('button2')
box.pack_start(b1)
box.pack_start(b2)

الآن منذ الافتراضي التعبئة هو أن يكون expand=True, سواء تلك الأزرار المضافة إلى مربع توسيع كل تشغل نصف مساحة.لا يهم ما حجم الحاوية.أعتقد هذا "بسط".

توسيع الحاجيات:

[[    widget    ][    widget    ]]

لذا ، إذا كنت تريد أحد الأزرار إلى عدم التوسع ، سوف حزمة مثل هذا:

box.pack_start(b1, expand=False)

عدم التوسع في القطعة:

[[widget][        widget        ]]

ثم على زر سوف تحتل سوى مساحة فإنه يحتاج إلى رسم نفسها:النص + الحدود + ظلال + الصور (إن وجدت).... الخوغيرها من زر سوف تملأ المساحة المتبقية.عادة, أزرار لا حاجة إلى توسيع نطاق حتى أكثر في الحياة الحقيقية هو النص الذي تريد أن تملأ النافذة.

أخرى المعلمة التي يمكن أن تنتقل إلى pack_start هو ملء المعلمة عادة هذا يمكن تجاهلها.ويكفي هنا أن أقول أنه إذا expand=False ثم fill المعلمة تجاهلها تماما (لأنه لا معنى له في هذه الحالة).

الشيء الآخر الذي ذكره هو set_size_request.أنا عموما أقول أن هذه ليست فكرة جيدة.أقول عموما ، لأن هناك حالات حيث سوف تحتاج إلى استخدامها.ولكن بالنسبة لشخص بداية مع التعبئة GTK+ واجهة المستخدم, أنصح بشدة عدم استخدامه.في العام ، والسماح صناديق وغيرها من الحاويات التعامل مع التصميم الخاص بك بالنسبة لك.على set_size_request لا تفعل بالضبط ما كنت تتوقع أن تفعله.لا تغيير حجم القطعة ، ولكن مجرد مقدار المساحة التي سوف الطلب.قد تستخدم أكثر من ذلك ، بل قد تمتد إلى ملء مساحات أكبر.فإنه نادرا ما تصبح أصغر من الطلب ، ولكن مرة أخرى لأنها مجرد "طلب" ليس هناك ما يضمن theat الطلب سوف يتم الوفاء بها.

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