إغلاق برنامج نصي easygui بيثون مع زر القياسية 'وثيقة'
-
22-08-2019 - |
سؤال
ولقد خلق <م> جدا م> التطبيق بسيط، الذي يقدم entrybox easygui () ويستمر في حلقة هذا إلى أجل غير مسمى لأنه يتلقى إدخال المستخدم.
ويمكنني إنهاء البرنامج باستخدام الزر إلغاء الأمر لأن هذا يعود بلا، ولكن أود أيضا أن تكون قادرة على استخدام معيار 'وثيقة' زر لإنهاء البرنامج. (أي أعلى يمين نافذة ويندوز، أعلى اليسار من نافذة ماك) هذا الزر لا يفعل شيئا في الوقت الحالي.
وبإلقاء نظرة على وحدة easygui لقد وجدت هذا السطر:
root.protocol('WM_DELETE_WINDOW', denyWindowManagerClose )
وهذا يبدو أن الجاني. أنا لست خبيرا TKinter لكن ربما استطيع العمل على كيفية تغيير هذا المعالج على العمل بالطريقة التي أريدها.
ولكن، وكما كنت تفضل عدم فوضى حول مع وحدة easygui، هل هناك طريقة لتجاوز هذا السلوك من مخطوطتي الرئيسي، ويكون الزر إغلاق إما إغلاق البرنامج صريح أو العودة لا أحد؟
المحلول
ووسيتطلب تغيير وحدة easygui، نعم. وسوف تحصل عليه تعديل!
و** لقد أرسلت في البريد الإلكتروني للخالق EasyGUI explaning هذا [12:12، يناير 23/09]
و** أنا فقط أريد أن أقول أن إمكانية هذا التغيير يحدث - على كل حال، وأنا أشك - هي صغيرة جدا. كما ترون، والمقصود EasyGUI أن يكون وسيلة بسيطة ومتميزة لإنشاء واجهات. أعتقد أن هذه الإضافة لن يساعد أي، وخاصة منذ واجهة تسلسلية جدا، لذلك سيكون مربكا للمستخدمين الجدد. [12:19، يناير 23/09]
و** قال الخالق EasyGUI هذا ردا على البريد الإلكتروني الخاص بي:
<اقتباس فقرة>ويظهر مربع حوار easygui ينبغي أبدا الخروج تطبيق - يجب أن يمر إلى الوراء قيمة إلى المتصل والسماح لل المتصل تقرر ما يجب القيام به.
ولكن هذه فكرة مثيرة للاهتمام. بدلا من مجرد تجاهل الضغط على و"وثيق" رمز، يمكن أن صناديق easygui إرجاع نفس القيمة التي انقر على ان زر "إلغاء" عودة. أنا أتأمل في هذا الشأن.
و- ستيف FERG
اقتباس فقرة>وأعتقد أن هذا هو التقدم على الأقل. [02:40، يناير 23/09]
نصائح أخرى
وأنا لا أعرف الآن، ولكن هل حاولت شيء من هذا القبيل:؟
root.protocol('WM_DELETE_WINDOW', self.quit)
أو
root.protocol('WM_DELETE_WINDOW', self.destroy)
ولم أحاول، ولكن جوجل شيء من هذا القبيل "Tkinter protocol WM_DELETE_WINDOW"
ولقد وجدت الحل، فإن الجواب هو أقل من مربع الاختيار، عندما تعرف بعض الوظائف (يمكنك كتابة فقط لايجاد denyWindowManagerClose) وانتقل إلى حيث يعرف ذلك. محوه ووضع هذا الرمز في مكانها.
def denyWindowManagerClose():
#------------------------------------------------------------------
# Changed by ProgrammingBR
# Enables the user to close the window without entering a value
# Youtube URL: https://www.youtube.com/channel/UCTZh6kWz_iYACNE6Jcy2lhw
#------------------------------------------------------------------
global __enterboxText
__enterboxText = None
boxRoot.quit()
ويمكنك إنشاء ملف النسخ الاحتياطي، ولكن هذا العمل لجميع صناديق والاقتراحات الواردة هنا جانبا من هذا لن ينجح، حاولت لهم. إذا كنت تريد أن ترى ولدي شريط فيديو على ذلك (وهو باللغة البرتغالية، ولكن يمكنك متابعته) اذهبوا إلى قناة يوتيوب، وسوف تحميله قريبا ونشر الرابط هنا:)