2016-11-10 5 views
0

У меня есть холст с изображением, которое я хотел бы использовать для фона. Моя проблема в том, что, когда я помещаю кнопку в нужное место, и я пытаюсь прокрутить вниз, кнопка перемещается с экраном вместо того, чтобы оставаться там, где я хочу, чтобы он был на холсте.Как позиционировать кнопку на холсте, а не на экране с помощью Tkinter 3

frame = Frame(self) 
    frame.pack() 

    mapImg = PhotoImage(file='Fo4-pip-map.png') 
    canvas = Canvas(frame, width=2048, height=2048, scrollregion=(0,0,2048,2048)) 
    canvas.create_image(0,0, image=mapImg, anchor='nw') 
    canvas.image = mapImg 

    xscrollbar = Scrollbar(frame, orient=HORIZONTAL) 
    xscrollbar.pack(side=BOTTOM, fill=X, anchor='s') 
    yscrollbar = Scrollbar(frame, orient=VERTICAL) 
    yscrollbar.pack(side=RIGHT, fill=Y, anchor='e') 
    xscrollbar.config(command=canvas.xview) 
    yscrollbar.config(command=canvas.yview) 

    canvas.config(xscrollcommand=xscrollbar.set, yscrollcommand=yscrollbar.set) 
    canvas.pack(side=LEFT, expand=True, fill=BOTH) 


    vaultImg = PhotoImage(file='Vault.png') 
    vaultImg = vaultImg.zoom(5) 
    vaultImg = vaultImg.subsample(32) 

    vault111Button = Button(canvas, width=30, height=30, borderwidth=0, image=vaultImg, 
          command=lambda: controller.show_frame('Vault111')) 
    vault111Button.image = vaultImg 
    vault111Button.place(x=150, y=100) 
+0

Ваш отступ слегка сломан. –

+0

@BryanOakley я исправил? если вы имели в виду первую строку, я просто вложил ее неправильно. Все дело в том же отступе. – DamnFreckles

+0

Да, вы исправили его, если он выглядит одинаково в вашем редакторе и в актуальном вопросе. –

ответ

0

place менеджер геометрии ставит детей на фиксированное смещение от своих родителей - в частности, прокрутка холст не применяется к ним. Избавьтесь от последней строки, а вместо этого используйте:

canvas.create_window(150, 100, window=vault111Button)