2015-07-16 5 views
0
  1. Я сделал код в двух файлах на python.
  2. Из main.py вызывается экран функции, который имеет некоторый переключатель.
  3. ошибка при запуске кода & главный экран открывается, если нажать кнопку «ОК» , тогда он отлично работает. Однако, если я закрою окно, нажав кнопку закрытия, появится ошибка.Python; ошибка выхода экрана

    [code] 
    
    Exception in Tkinter callback 
    Traceback (most recent call last): 
    File "C:\Python27\lib\lib-tk\Tkinter.py", line 1536, in __call__ 
        return self.func(*args) 
    File "E:\main_menu.py", line 51, in suicide 
        self.screen.destroy() 
    File "C:\Python27\lib\lib-tk\Tkinter.py", line 1898, in __getattr__ 
        return getattr(self.tk, attr) 
    AttributeError: screen 
    [/code] 
    
  4. main.py [код]

    import main_menu 
    
    while True: 
        val = main_menu.screen() 
        if(1 == val): 
         //do something 
        elif(2 == val): 
         //do something 
        elif(3 == val): 
         //do something 
    
        #print(val)  
    [/code] 
    
  5. main_screen.py [код]

    from Tkinter import * 
    import Tkinter 
    
    
    
    class menu1(Tkinter.Tk): 
    
        def __init__(self, master): 
         Tkinter.Tk.__init__(self,master) 
         self.master = master 
    
         self.protocol("WM_DELETE_WINDOW", self.suicide) 
    
         #clear value 
         self.val1 = 1 
    
         #default selection 
         self.v = IntVar() 
         self.v.set(1) 
    
         #create a label 
         self.x1 = Label(self,text="Choose a function:",justify = CENTER,padx = 100) 
         self.x1.pack() 
    
         #first radiobutton 
         self.x2 = Radiobutton(self,text="text1",padx = 100,variable=self.v,value=1) 
         self.x2.pack(anchor=W) 
    
         #second radiobutton 
         self.x3 = Radiobutton(self,text="text2",padx = 100,variable=self.v,value=2)  
         self.x3.pack(anchor=W) 
    
         #third radiobutton 
         self.x4 = Radiobutton(self,text="text3",padx = 100,variable=self.v,value=3)  
         self.x4.pack(anchor=W) 
    
         #fourth radiobutton 
         self.x5 = Radiobutton(self,text="text4",padx = 100,variable=self.v,value=4)  
         self.x5.pack(anchor=W) 
    
         #create button 
         self.x6 = Button(self,text="OK",command=self.submit)  
         self.x6.pack() 
    
        def submit(self): 
         self.val1 = self.v.get() 
         self.destroy() 
    
        def suicide(self): 
         self.val1 = 0 
         self.screen.destroy()   
    
    def screen(): 
        #create a root object 
        root = menu1(None) 
        root.title("Option") 
        root.geometry("480x320") 
        root.mainloop() 
        return root.val1  
    [/code] 
    

ответ

2

self.screen.destroy() вызывает исключение, потому что вы не имеете self.screen.

Я думаю, вам просто нужно self.destroy(), как и в методе выше

submit()