Не удается заставить полосу прокрутки работать на холсте в Tkinter - PullRequest
1 голос
/ 30 марта 2020

Я создал пользовательский интерфейс с кнопками, изображениями, ext и сумел отобразить полосу прокрутки, однако она не будет прокручиваться вверх и вниз по холсту. Я пробовал несколько подходов к этому, которые я нашел на inte rnet, однако ни один не работал. Я не получаю сообщений об ошибках. Ниже приведен мой код, я сохранил только небольшое количество меток и кнопок, а основной код для полосы прокрутки - верхняя. Любая помощь будет оценена, спасибо.

            self.root3=tk.Toplevel()
            frame_3=tk.Frame(self.root3,width=2000,height=1080)
            frame_3.pack(expand=True, fill=BOTH) 
            canvas=Canvas(frame_3,bg='black',width=2000,height=1080,scrollregion=(0,0,4000,2060))
            hbar=Scrollbar(frame_3,orient=HORIZONTAL)
            hbar.pack(side=BOTTOM,fill=X)
            hbar.config(command=canvas.xview)
            vbar=Scrollbar(frame_3,orient=VERTICAL)
            vbar.pack(side=RIGHT,fill=Y)
            vbar.config(command=canvas.yview)
            canvas.config(width=2000,height=1080)
            canvas.config(xscrollcommand=hbar.set, yscrollcommand=vbar.set)
            canvas.pack(side=LEFT,expand=True,fill=BOTH)

            HButton = tk.Button(canvas,bg="orange",text="History",command = self.History_View)
            HButton.place(x=1000,y=20)

            Title_label = tk.Label(canvas,bg="black", fg = "orange",text ="MOVIES R US")
            Title_label.place(x=500,y=0)
            Title_label.config(font=("Ariel","20"))

            action_label=tk.Label(canvas,bg="black",fg="orange",text="ACTION")
            action_label.place(x=50,y=60)
            action_label.config(font=("Ariel","20"))

            AEGimg=tk.PhotoImage(file="AEG.gif")
            AEGlabel = tk.Label(self.root3, image=AEGimg,bd=0)#bd = 0 removes border
            AEGlabel.image= AEGimg
            AEGlabel=tk.Button(self.root3,image=AEGimg, bd=0,bg="black", command=self.AEG_film)
            AEGlabel.place(x=50,y=100, anchor= NW)

1 Ответ

1 голос
/ 30 марта 2020

Вы не можете использовать pack, grid или place для размещения виджетов на холсте, если вы хотите иметь возможность прокручивать их. Канва может прокручивать только те элементы, которые добавлены одним из методов «создания», например create_window .

...