我的代码失败了。的问题:
self.frame_for_content.pack()
转移到 self.scrollbar.pack()
下,滚动条就会重新出现。 (为什么会出现这种情况超出我的范围,但滚动条仍然不起作用或遵守side
打包行为。)我试图在scroll region
和bbox
上加入一些Brian Oakley的建议,但无济于事。
我已将代码减少到最低限度,但无法完成。非常感谢帮助。
import tkinter as tk
import tkinter.ttk as ttk
class TestGUI(tk.Tk):
def __init__(self):
super().__init__()
self.canvas = tk.Canvas(self)
self.frame_for_content = tk.Frame(self.canvas)
self.canvas_frame = self.canvas.create_window((0,0), window=self.frame_for_content, anchor=tk.NW)
self.scrollbar = tk.Scrollbar(self.canvas, orient=tk.VERTICAL, command=self.canvas.yview)
self.canvas.configure(yscrollcommand=self.scrollbar.set)
self.frame_for_content.pack()
self.canvas.pack(side=tk.LEFT)
self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
for i in range(100):
tk.Label(self.frame_for_content, text="Hello World - " + str(i)).pack()
self.update()
self.canvas.config(scrollregion=self.canvas.bbox(tk.ALL))
TestGUI().mainloop()
答案 0 :(得分:4)
您不希望self.frame_for_content.pack()
,因为您正在使用画布,就像该窗口小部件的几何管理器一样,因此self.canvas.create_window
代替.pack
或{{ 1}}。
要获得正确的尺寸,您可以获得宽度和宽度。画布边界框的高度。
我认为这可以满足您的需求:
.grid