如何修复滚动条,使其从顶部延伸到底部?

时间:2019-02-05 04:25:44

标签: python python-3.x tkinter

我想在画布中创建框架,并且需要能够滚动框架的内容。

我知道不能将滚动条添加到框架中,因此我正在创建一个画布用于附加滚动条,但是在创建滚动条时它在角落变小了。我需要解决方案来解决它。 Screenshot of my scroll bar problem

root = Tk()
root.geometry("1000x1000")
root.title("Title")
root.grid_rowconfigure(2, weight=1)
root.columnconfigure(0, weight=1)
canv=Canvas(root,width=600, height=600, background='blue')
vsb = Scrollbar(root, orient="vertical", command=canv.yview)
canv.config(yscrollcommand=vsb.set)
vsb.grid(row=0,column=1,sticky="ns")
canv.config(scrollregion=(0, 0,600,1000))
canv.grid(row=1, column=0)
canv.bind('<Configure>',canv.config(scrollregion=canv.bbox('all')))

因此,我希望在根屏幕的顶部中心(北)上有一个标签,并具有一个滚动条,该滚动条应能够滚动整个屏幕的内容。

1 个答案:

答案 0 :(得分:1)

因为您在scrollbar中有row=0,在canvas中有row=1。您必须在相同的canvas中创建scrollbarrow,但要使用两个不同的columns。试试这个:

from tkinter import *

root = Tk()
root.geometry("1000x1000")
root.title("Title")

root.grid_rowconfigure(0, weight=1)
root.columnconfigure(0, weight=1)
root.columnconfigure(1, weight=0)

canv = Canvas(root, width=600, height=600, background='blue')
vsb = Scrollbar(root, orient="vertical", command=canv.yview)
canv.config(yscrollcommand=vsb.set)
vsb.grid(row=0, column=1, sticky="ns")
canv.config(scrollregion=(0, 0, 600, 1000))
canv.grid(row=0, column=0)  # row = 0
canv.bind('<Configure>', canv.config(scrollregion=canv.bbox('all')))

root.mainloop()