2008-09-21 16 views

उत्तर

93

टिंकर protocol handlers नामक एक तंत्र का समर्थन करता है। यहां, प्रोटोकॉल शब्द और विंडो प्रबंधक के बीच बातचीत को संदर्भित करता है। सबसे सामान्य रूप से प्रयुक्त प्रोटोकॉल को WM_DELETE_WINDOW कहा जाता है, और इसका उपयोग यह निर्धारित करने के लिए किया जाता है कि जब उपयोगकर्ता विंडो प्रबंधक का उपयोग करके विंडो को स्पष्ट रूप से बंद कर देता है तो क्या होता है।

आप इस प्रोटोकॉल के लिए कोई हैंडलर स्थापित करने के लिए विधि का उपयोग कर सकते हैं (विजेट एक Tk या Toplevel विजेट होना चाहिए):

import tkinter as tk 
from tkinter import messagebox 

root = tk.Tk() 

def on_closing(): 
    if messagebox.askokcancel("Quit", "Do you want to quit?"): 
     root.destroy() 

root.protocol("WM_DELETE_WINDOW", on_closing) 
root.mainloop() 
+5

मैंने समान कोड का उपयोग किया लेकिन 'root.destroy()' – 182764125216

+2

के साथ यदि आप ट्विस्ट की तरह कुछ उपयोग कर रहे हैं जो स्वतंत्र रूप से इवेंट लूप को बनाए रखता है या टिंकर (उदाहरण: ट्विस्टेड रिएक्टर ऑब्जेक्ट) सुनिश्चित करता है कि बाहरी मुख्य लूप को जो भी स्नेहीटिक्स से रोका जाता है यह उस उद्देश्य के लिए प्रदान करता है (उदाहरण: मोड़ के लिए reactor.stop()) –

+3

विंडोज़ पर मेरे पायथन 2.7 पर, 'टिंकर' में एक सबमिशन संदेशबॉक्स नहीं था। मैंने 'tkMessageBox को संदेशबॉक्स के रूप में आयात किया' – IronManMark20

-13

उपयोग:

यहाँ आप एक ठोस उदाहरण है CloseEvent

def closeEvent(self, event): 
# code to be executed 
+3

इस उत्तर को और अधिक जानकारी की आवश्यकता है। यह लाइन कहां रखा गया है? मेरे अंत में थोड़ा झुकाव इसे काम करने के लिए प्रतीत नहीं कर सकता है। – thedayturns

13

मैट ने एक क्लासिक मॉड्यूफैटियो दिखाया है बंद बटन के एन।
दूसरी बात यह है कि बंद बटन विंडो को कम करें।
आप iconify विधि
protocol विधि का दूसरा तर्क होने के द्वारा इस व्यवहार को पुन: उत्पन्न कर सकते हैं। > बाहर निकलें, और भी Esc बटन -
क्लासिक फ़ाइल मेनू:

# Python 3 
import tkinter 
import tkinter.scrolledtext as scrolledtext 

class GUI(object): 

    def __init__(self): 
     root = self.root = tkinter.Tk() 
     root.title('Test') 

    # make the top right close button minimize (iconify) the main window 
     root.protocol("WM_DELETE_WINDOW", root.iconify) 

    # make Esc exit the program 
     root.bind('<Escape>', lambda e: root.destroy()) 

    # create a menu bar with an Exit command 
     menubar = tkinter.Menu(root) 
     filemenu = tkinter.Menu(menubar, tearoff=0) 
     filemenu.add_command(label="Exit", command=root.destroy) 
     menubar.add_cascade(label="File", menu=filemenu) 
     root.config(menu=menubar) 

    # create a Text widget with a Scrollbar attached 
     txt = scrolledtext.ScrolledText(root, undo=True) 
     txt['font'] = ('consolas', '12') 
     txt.pack(expand=True, fill='both') 

gui = GUI() 
gui.root.mainloop() 

इस उदाहरण हम उपयोगकर्ता दो नए बाहर निकलने के विकल्प देने में:

यहाँ एक काम कर उदाहरण, विंडोज 7 पर परीक्षण किया है ।

संबंधित मुद्दे