Python/tkinter: فواصل القائمة ، والعناصر المعوقة ، والتنقل في لوحة المفاتيح؟
-
30-09-2019 - |
سؤال
أنا أدرس عنصر واجهة مستخدم Tkinter Listbox ولم أتمكن من إيجاد حلول للوظائف التالية:
كيف يمكنني إنشاء عناصر فاصل أفقي غير قابلة للتصوير ، على سبيل المثال. الفواصل المكافئة لعناصر أداة القائمة Tkinter's .add_separator ()؟ (باستخدام chars مثل الشرطات والدرجات السفلية تبدو مروعة).
كيف يمكنني تعطيل عنصر معين؟ حاولت استخدام .itemConfig (الفهرس ، الحالة = "معطل") دون نجاح.
كيف يمكنني تمكين التنقل لوحة المفاتيح ، على سبيل المثال. عندما تقوم إدخال لوحة مفاتيح المستخدم بالتمرير تلقائيًا إلى الأمام إلى أقرب عنصر يبدأ بالنص الذي كتبه المستخدم؟ يجب أن ربط ('u003CKeyPress> ، ...) وإدارة هذا السلوك بنفسي؟
هل ستكون بعض الوظائف المذكورة أعلاه أسهل في التنفيذ باستخدام عنصر واجهة مستخدم نصية أو أداة TTK TreeView؟
شكرا لك ، مالكولم
المحلول
لا يمكنك. القطعة لا تدعم ذلك.
لا يمكنك تعطيل بعض العناصر ، ولا يدعم عنصر واجهة المستخدم سمة الحالة. ومع ذلك ، يمكنك مراقبة التحديد والقيام بالشيء المناسب إذا حدد المستخدم شيئًا معاقًا ، واستخدام المقدمة العنصر للدلالة على المعاقين.
ستحتاج إلى ربط أحداث Keypress وإدارة السلوك بنفسك. إنه ليس صعبًا بشكل خاص ، بل مجرد مملة بعض الشيء.
قد يكون أداة النصوص النصية أفضل رهان لك ، على الرغم من أنك ستضطر إلى إضافة روابط لتقليد الروابط الافتراضية لـ ListBox.
خلاصة القول: لا يوفر Tkinter شيئًا يدعم مباشرة ما تريد القيام به ، لكن لبنات البناء كلها موجودة. سيكون عليك فقط بناءها بنفسك.