2012-02-12 15 views
14

बंद करने का प्रयास कर रहा है, यह पता लगाने का कोई तरीका है कि उपयोगकर्ता विंडो बंद करने का प्रयास कर रहा है या नहीं?पीईसाइड/पीईक्यूटी पता लगाता है कि क्या उपयोगकर्ता विंडो

def exit_dialog(): 
    #do stuff 
    pass 

root = Tk() 
root.protocol("WM_DELETE_WINDOW", exit_dialog) 
root.mainloop() 

धन्यवाद: उदाहरण के लिए, Tkinter में हम कुछ इस तरह कर सकते हैं।

उत्तर

48

अपनी मुख्य विंडो में QWidget की closeEvent विधि को ओवरराइड करें।

उदाहरण के लिए:

app = QApplication(sys.argv) 
app.aboutToQuit.connect(myExitHandler) # myExitHandler is a callable 
+5

ध्यान दें कि यह मुख्य थ्रेड में काम नहीं करेगा है व्यस्त गणना:

class MainWindow(QWidget): # or QMainWindow ... def closeEvent(self, event): # do stuff if can_exit: event.accept() # let the window close else: event.ignore() 

एक और संभावना QApplication के aboutToQuit संकेत इस तरह का प्रयोग है। खिड़की को बंद करने में सक्षम होने के लिए गणना को दूसरे थ्रेड में ले जाना चाहिए। – d33tah

+1

ध्यान दें कि QMainWindow पर, कोई विशेषता नहीं है 'canExit' – Tcll

+1

@Tcll, क्यूटी लाइब्रेरी में कहीं भी कोई विशेषता नहीं है (मेरे ज्ञान के लिए, लेकिन निश्चित रूप से QWidget या QMainWindow में नहीं)। यह बात है: आप इसे एक कस्टम हैंडलर के रूप में परिभाषित करते हैं। –