سؤال

لدي AboutDialog صندوق مصنوع في الفسحه, ولكن إغلاق الزر لا يعمل.أنا لا أعرف كيفية توصيل هذا الزر إلى وظيفة منفصلة ، لأنه يجلس في القطعة تسمى dialog-action_area.

مشكلة أخرى هي إذا كنت تستخدم الزر إغلاق إنشاؤها من قبل مدير النافذة لا أستطيع فتحه مرة أخرى لأنه قد تم تدميرها.

كيف يمكنني تغيير هذا لذا فإنه يخفي?

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

المحلول

تحتاج إلى استدعاء القطعة إخفاء (طريقة) عندما تتلقى حذف أو إلغاء إشارات:

response = self.wTree.get_widget("aboutdialog1").run() # or however you run it
if response == gtk.RESPONSE_DELETE_EVENT or response == gtk.RESPONSE_CANCEL:
  self.wTree.get_widget("aboutdialog1").hide()

يمكنك العثور على نوع الاستجابة الثوابت في GTK الوثائق

نصائح أخرى

أي نافذة الحوار ، فإنها تتطلب منك

  1. استخدام أسلوب تشغيل.
  2. استخدام "س" إشارة

أول كتلة الحلقة الرئيسية و سوف يعود في أقرب وقت الحوار يتلقى ردا على ذلك ، قد يكون هذا ، اضغط على أي زر في مجال العمل أو اضغط على Esc او الاتصال على الحوار استجابة طريقة أو "تدمير" نافذة على الماضي لا تعني أن الإطار سوف يتم تدميرها ، وهذا يعني أن تشغيل() طريقة الخروج والعودة استجابة.مثل هذا:

response = dialog.run()

إذا كنت تستخدم المصحح, ستلاحظ أن الحلقة الرئيسية يبقى هناك حتى النقر على زر أو محاولة لإغلاق مربع الحوار.مرة واحدة كنت قد تلقيت يووت استجابة, ثم يمكنك useit كما تريد.

response = dialog.run()
if response == gtk.RESPONSE_OK:
    #do something here if the user hit the OK button 
dialog.destroy()

الثانية تسمح لك استخدام الحوار في غير حجب الأشياء ، ثم عليك أن ربط الحوار إلى "الاستجابة" إشارة.

def do_response(dialog, response):
    if response == gtk.RESPONSE_OK:
        #do something here if the user hit the OK button 
    dialog.destroy()

dialog.connect('response', do_response)

الآن ستلاحظ أن لديك لتدمير الحوار

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