使用tkinter创建固定背景

时间:2013-10-22 00:27:16

标签: user-interface python-3.x tkinter

当我尝试使用背景图像设置窗口时,我正在使用tkinter。在某些过程中,我有一个填满复选框的框架,因此我创建了一个滚动条,以便用户可以看到所有选项。问题是滚动条还移动画布的背景图像。有没有办法可以修复图像不移动或以某种方式单独移动框架。

代码是

def canvasScroll():
    canvas = gui.createCanvas() 
    fFrame = gui.createNewFrame()

    scrollbar = Scrollbar(root, orient="vertical", command=canvas.yview)
    canvas.configure(yscrollcommand = scrollbar.set)
    scrollbar.pack(side="right", fill="y")
    canvas.pack(side="left", fill="both", expand= True)
    canvas.create_window((150,50),window = fFrame, anchor='nw', tags = "frame")
    gOb.change_canvas(canvas)
    fFrame.bind("<Configure>", gui.scroll)

    gOb.change_scrollbar(scrollbar)
    gOb.change_frame(fFrame)

def createCanvas():
    canvas = Canvas(root,height = _h, width = _w,highlightthickness = 0)
    canvas.pack(side='top',fill='both',expand='yes')
    canvas.create_image(-200,-200,image=bground,anchor='nw')  
    return canvas
def createNewFrame():
    frame = Frame(root,height = _h, width = _w,background='white')
    frame.pack()
    return frame

为了清楚起见,这些人都是类名gui的一部分,gOb是一个包含几个gui对象的对象。

1 个答案:

答案 0 :(得分:0)

这是一个想法 - 它是一种kludgy,但它会起作用。每次滚动条滚动时,移动背景图像的位置使其看起来保持在同一位置:

标记您的图片,以便日后访问:

canvas.create_image(-200,-200,image=bground,anchor='nw',tags="background")
#                                                       ^^^^^^^^^^^^^^^^^

让您的滚动条调用您定义的函数:

scrollbar = Scrollbar(root, orient="vertical", command=scrollCallback)

定义滚动回调:

def scrollCallback(*args):
    canvas.yview(*args)
    # Arrange for your background image to move so it appears to stay in the same position as the canvas scrolls.