【发布时间】:2020-09-17 18:24:56
【问题描述】:
我使用 Canvas 为我的 tkinter 应用程序使用了滚动条。我正在使用 Pack 来设置滚动条。但我有一个问题。水平滚动条工作正常,但垂直滚动条不行。位置配置错误。
我的代码:
self.scroll_x = tk.Scrollbar(self, orient=tk.HORIZONTAL)
self.scroll_y = tk.Scrollbar(self, orient=tk.VERTICAL)
self.canvas = tk.Canvas(self, width=600, height=100,
xscrollcommand=self.scroll_x.set,
yscrollcommand=self.scroll_y.set)
self.scroll_x.config(command=self.canvas.xview)
self.scroll_y.config(command=self.canvas.yview)
self.frame = tk.Frame(self.canvas)
self.canvas.create_window((0, 0), window=self.frame,anchor=tk.NW)
self.canvas.bind_all("<MouseWheel>", self.on_mousewheel)
self.canvas.config(scrollregion=self.canvas.bbox(tk.ALL))
self.canvas.pack(side=tk.LEFT,expand=True,fill=tk.BOTH)
self.scroll_x.pack(side=tk.BOTTOM,fill=tk.X)
self.scroll_y.pack(side=tk.RIGHT,fill=tk.Y)
self.bind("<Configure>", self.resize)
self.update_idletasks()
def on_mousewheel(self, event):
shift = (event.state & 0x1) != 0
scroll = -1 if event.delta > 0 else 1
if shift:
self.canvas.xview_scroll(scroll, "units")
else:
self.canvas.yview_scroll(scroll, "units")
def resize(self, event):
region = self.canvas.bbox(tk.ALL)
self.canvas.configure(scrollregion=region)
【问题讨论】:
-
您能否指定“位置配置错误。”给我们?
-
另外,您能否与我们分享一下您在滚动区域中拥有的至少一个小部件?
-
水平滚动条配置错误。 self.scrollbox = tk.Scrollbar (self, orient = tk.HORIZONTAL) self.scroll_x.pack (side = tk.BOTTOM, fill = tk.X)
-
您是否也在滚动条上尝试
expand=True?