当我尝试使用背景图像设置窗口时,我正在使用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对象的对象。
答案 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.