0

I made this program, I recommend run it first. The main idea is popping window, it should pop after clicking on text info. This works correctly, than, an user needs to close this window, so I made red closing button (rectangle with lines) in top right corner. After clicking on this button, new window should disappear, but first window with ovals should stay. I need function for closing this window, I was trying to find solution a long time, but I am not able to. Any idea please?

import tkinter

class Desktop:

    def __init__(self):
        self.canvas = tkinter.Canvas()
        self.canvas.pack()
        x, y = 25,25
        for i in range(1,61):
            self.canvas.create_oval(x-10, y-10, x+10, y+10, fill='blue')
            self.canvas.create_text(x, y, text=i)
            x += 30
            if i%10==0:
                x = 25
                y += 40
        self.canvas.create_text(340, 150, text='info', font='arial 17', tags='info')
        self.canvas.tag_bind('info', '<Button-1>', self.window)

    def window(self, event):
        self.canvas.create_rectangle(40,40,310,220,fill='white')
        x, y = 75,100
        for i in range(1,9):
            self.canvas.create_rectangle(x-30,y-30,x+30,y+30)
            self.canvas.create_text(x,y,text='number ' + str(i), font='arial 9')
            x += 65
            if i == 4:
                x = 75
                y += 70
            self.rec = self.canvas.create_rectangle(310,40,290,60, fill="red", tags="cancel")
            self.line = self.canvas.create_line(310,40,290,60,310,60,290,40, tags="cancel")
            self.canvas.tag_bind('cancel', '<Button-1>', self.close)

    def close(self,event):
        #?
        print('should close this part of screen')

d = Desktop()
Jozko
  • 85
  • 1
  • 11

1 Answers1

0

What I use in my code is:

def quit(self):      
    root.destroy()
    self.quit()

This might be a really long winded way to do it but it works for me every time.

EDIT: Just thinking about it now, depending on the way you open a new frame,root.destroy would be the way I would do it.

MrBlob
  • 67
  • 9