Python Forum
[Tkinter] the picture disappears - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: GUI (https://python-forum.io/forum-10.html)
+--- Thread: [Tkinter] the picture disappears (/thread-25249.html)



the picture disappears - berckut72 - Mar-24-2020

Hello!
Tell me, please ... I move the picture in the class using a separate method, and when the picture receives the last coordinate, then it disappears, and I need the picture to not disappear.

...
root = tk.Tk()
root.geometry('1200x900+2+10')
root.resizable(width = False, height = False)

puth = 'C:\\school\\general\\'            #основной путь к игре


canvas1 = Canvas(root, width = 1200, height = 900, bg = "#536878", highlightthickness = 0)
canvas1.place(x = 0, y = 0)

im    = Image.open(puth + 'image\\biblio.PNG').convert('RGBA')
im_01 = ImageTk.PhotoImage(im)
fon   = canvas1.create_image(0, 0, anchor = NW, image = im_01)
canvas1.update()

    
def image_load():
   
    robots = []
    path = 'C:\\school\\general\\image\\'
    for i, filename in enumerate(os.listdir(path)):
        if filename.find("robot") == False:
            if (filename.endswith(".png") or filename.endswith(".PNG")):
                path1 = path + '\\' + filename
                im = Image.open(path1).convert('RGBA')
                datas = im.getdata()
                opacity_level = 0
                newData = []
                for item in datas:
                    if item[0] == 127 and item[1] == 127 and item[2] == 127:
                        newData.append((0, 0, 0, opacity_level))
                    else:
                        newData.append(item)
                im.putdata(newData)
                robots.append(ImageTk.PhotoImage(im))
                    
    starts = Robot(robots)

class Robot:
    
    def __init__(self, robots):
        
        self.robots = robots
        self.ind = 1
        self.y1  = 15
        self.rbs = canvas1.create_image(600, 300, anchor = 'nw', image = robots[1])
        self.move_rob(self.ind, self.rbs, self.robots, self.y1)
    
    
    def move_rob(self, ind, rbs, robots, y1):

        self.cadr = self.robots[int(self.ind)]
        
        if int(self.ind) == 16:
            self.ind = 0
        if int(self.y1) > 0:
            self.y1 -= 0.75
        else:
            self.y1 -= 0.1
        
        canvas1.itemconfig(self.rbs, image = self.cadr)
        canvas1.move(self.rbs, 0, self.y1)
        
        if self.ind != 0:
            self.ind += 0.2
            root.after(30, self.move_rob, self.ind, self.rbs, self.robots, self.y1)
        else:
            self.robot(self.robots)
    
    
    def robot(self, robots):
        
        self.robot_x = canvas1.coords(self.rbs)[0]
        self.robot_y = canvas1.coords(self.rbs)[1]
        self.rbs = canvas1.create_image(self.robot_x, self.robot_y, image = self.robots[16])
        print('Robot')


image_load()
root.mainloop()



RE: the picture disappears - berckut72 - Mar-24-2020

I solved the problem))) Creating a list of pictures transferred from the function (line 20) to the main code (on line 17) and it worked.