self.root = tkinter.Tk()
self.frame = Frame(self.root, width = 1300, height = 1300, bg = "yellow")
self.frame.grid(row = 0 , column = 0, sticky = 'nw')
self.frame.grid_rowconfigure(0, weight=1)
self.frame.grid_columnconfigure(0, weight=1)
self.frame.grid_propagate(True)
self.canvas_main = Canvas(self.frame,
height = 300,
width = 300,
scrollregion=(500,500,0,500)
)
self.canvas_main.grid(row = 0, column = 0, padx= 10, pady = 10, sticky = "news")
self.scrollbar = Scrollbar(self.root, orient = VERTICAL, command = self.canvas_main.yview)
self.scrollbar.grid(row = 0, column = 1, sticky = 'ns')
self.canvas_main.configure(yscrollcommand=self.scrollbar.set)
在上面的代码块中,我输入了Scrollbar元素以启用垂直滚动条,但是它没有反映出来。谁能在这个区块中找出我做错了什么?
答案 0 :(得分:0)
您已将可滚动区域(scrollregion
)设置为零像素高,因此tkinter认为在垂直方向没有任何滚动内容。
通常,您将首先进行绘制,然后将可滚动区域设置为包含您绘制的所有内容。为此,您需要获取边界框(包含所有画布对象的最小矩形),然后将其用作scrollregion
的值。
示例:
canvas = tk.Canvas(...)
<draw a bunch of objects>
canvas.configure(scrollregion=canvas.bbox("all"))
另一种方法是提前定义虚拟绘图区域的大小。例如,您已将画布的宽度和高度设置为300。如果您希望实际绘图区域是可见大小的两倍,则可以将scrollregion
设置为两倍大。 >
此示例将可滚动区域设置为从0,0(左上角)开始,一直扩展到600,600(右下角):
canvas = tk.Canvas(..., width=300, height=300)
canvas.configure(scrollregion=(0,0,600,600)