【问题标题】:How do I position a button to a canvas, not to the screen using Tkinter 3如何将按钮定位到画布上,而不是使用 Tkinter 3 定位到屏幕上
【发布时间】:2016-11-10 21:09:31
【问题描述】:

我有一张画布,上面有一张我想用作背景的图片。我的问题是,当我将按钮定位到正确的位置并尝试向下滚动时,按钮会随着屏幕移动,而不是停留在画布上我想要的位置。

    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)

【问题讨论】:

  • 你的缩进有点破损。
  • @BryanOakley 我解决了吗?如果您的意思是第一行,我只是错误地粘贴了它。整个东西都在同一个缩进中。
  • 是的,如果它在您的编辑器和实际问题中看起来相同,您已修复它。

标签: python-3.x button tkinter tkinter-canvas placement


【解决方案1】:

place 几何管理器将子级放置在与其父级的固定偏移处 - 特别是画布的滚动不适用于它们。去掉最后一行,改用:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多