Изображения исчезают при использовании полосы прокрутки - PullRequest
0 голосов
/ 03 июня 2019

Заранее извиняюсь за грамматические ошибки!

Я работаю над проектом для школы с использованием tkinter. Эта проблема сводила меня с ума в течение многих дней! Я попытался поместить полосу прокрутки на холст и рамки на холсте, но каждый раз, когда я прокручиваю некоторые ярлыки и изображения исчезают.

Если вы измените размер окна, изображения и метки вернутся немедленно. ПРИМЕЧАНИЕ: я работаю над несколькими файлами и классами параллельно, я добавил только те, которые связаны с проблемой.

class Feed(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller

        main_feed=tk.Label(self,bg="#F7F7F7")
        main_feed.pack(fill=tk.BOTH,side=tk.TOP,expand=tk.YES)

        frame_frame=MainFrame(main_feed, self.controller)
        frame_frame.pack(fill=tk.BOTH,expand=tk.YES)

        right_side_layer=tk.Label(frame_frame.frame_background,height=10,width=8,bg="#F7F7F7")
        right_side_layer.pack(fill=tk.BOTH,side=tk.RIGHT,expand=tk.YES)

        self.line_index=tk.IntVar(self,0)
        self.old_width_canvas= tk.IntVar(self,0)

        self.post_canvas = tk.Canvas(right_side_layer,bg="#F7F7F7")
        vbar=tk.Scrollbar(self.post_canvas , orient=tk.VERTICAL, command= self.custom_yview)

        self.post_canvas.bind('<Configure>', self.On_Configure)
        self.post_canvas.configure(yscrollcommand=vbar.set)

        self.post_canvas.pack(fill=tk.BOTH, expand=tk.YES)


    # Helping function for the scrolbar
    def custom_yview(self ,*args, **kwargs):
        self.post_canvas.yview(*args, **kwargs)
        x = self.post_canvas.canvasx(0)
        y = self.post_canvas.canvasy(0)
        self.post_canvas.coords("bg", x, y)

    def On_Configure(self,event,*args, **kwargs):
        self.custom_yview(*args, **kwargs)
        self.old_width_canvas.set(self.post_canvas.winfo_width())
        height = self.line_index.get()
        if height > self.post_canvas.winfo_height():
            self.post_canvas.bind_all("<MouseWheel>",lambda event:self.Update_Position(event, self.post_canvas))
            self.post_canvas.configure(scrollregion=(0,0,self.post_canvas.winfo_width(), height)) # (x0, y0, width, height)
        else:
            self.post_canvas.unbind_all("<MouseWheel>")

    def Update_Position(self, event, screen,*args, **kwargs):
        screen.yview_scroll(-1*(event.delta/120), "units")
        self.custom_yview(*args, **kwargs)
        self.frames['Feed'].post_canvas.create_window(100,num,window = new_post)
        num+=150
        self.frames['Feed'].line_index.set(self.frames['Feed'].line_index.get()+150)
        self.frames['Feed'].post_canvas.configure(scrollregion=(0,0,self.frames['Feed'].post_canvas.winfo_width(), 
        self.frames['Feed'].line_index.get())) # (x0, y0, width, height)

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...