【发布时间】:2021-08-16 17:52:58
【问题描述】:
我想在 tkinter 中有一个画布的水平滚动条。我的画布既有按钮又有线条。当我使用画布内置滚动条时,它只滚动线条而不滚动按钮。因此,对于我尝试使用此功能的按钮,该功能会在移动滚动条时移动按钮的位置。但是现在的问题是按钮和线条根据滚动条的宽度以不同的速度移动。滚动条为其末端提供相对坐标,但我需要绝对坐标,否则它会干扰按钮和线条的拖动功能。我已经坚持了一个星期,无法弄清楚任何有用的东西。在 stackoverflow 上尝试了几乎所有方法。
Toplevel1.hbar = ttk.Scrollbar(panel_2, orient="horizontal")
self.SystemCanvas.configure(scrollregion = (0, 0, 1000, 1000),
xscrollcommand = Toplevel1.hbar.set)
Toplevel1.hbar['command'] = self.SystemCanvas.xview
Toplevel1.hbar.bind('<B1-Motion>', lambda e:hscrollBarMove(e,
Toplevel1.hbar, self.SystemCanvas))
Toplevel1.hbar.pack(side = "bottom", fill = "x")
def hscrollBarMove(event, hbar, systemcanvas):
for instance in systemcanvas.winfo_children():
if isinstance(instance, tk.Button) or isinstance(instance, tk.Menu):
try:
instance.place(relx = - hbar.get()[0])
except:
pass
按钮和线条是动态的。 请有人帮助我:(
【问题讨论】:
-
使用
canvas.create_window(...)将按钮放入画布中。
标签: python tkinter canvas scrollbar