2013-10-22 47 views
0

我正在使用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的一部分和采空区是持有几个GUI对象的对象。

回答

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.