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) 
関連する問題