【发布时间】:2021-06-30 07:59:16
【问题描述】:
我正在尝试实现一个滚动条,该滚动条将在画布窗口中的一个框架中滚动。据我所知,画布、框架和框架元素都运行良好。我在框架中添加或删除元素没有任何问题,它们会按照我的意愿显示。唯一的问题是滚动条。
滚动条根本不起作用。它准确地显示在它应该出现的位置,但它根本不会对画布或框架元素做出反应。如果我调整窗口大小并压下画布,滚动条什么也不做——它只是保持空白,就好像它没有任何东西可以滚动一样。
我知道还有一百万个关于画布中滚动条的其他问题,但我已经尽可能多地仔细阅读了这些问题,但没有找到任何解决问题的方法。因此,我问:知道我哪里出错了吗?
非常感谢任何有关可能修复的反馈或建议。
lbl_frame = Canvas(menu, bg=root_bg, width=(menu.winfo_width() - 35), height=canvas_size, highlightthickness=0)
f = Frame(lbl_frame, bg=root_bg) # Frame that goes in the canvas
scroll = Scrollbar(menu, bg=root_bg, orient='vertical', width=17) # Scrollbar
scroll.grid(row=3, column=2, sticky='ns')
scroll.config(command=lbl_frame.yview) # Scrollbar's command reads information about the height of the canvas
lbl_frame.create_window(0, 0, window=f, anchor="nw") # Creating a canvas window for the frame
lbl_frame.config(yscrollcommand=scroll.set)
def canvas_resize(event):
global min_size # Currently set to 95
canvas_size = menu.winfo_height() - 170 # Sum of all other elements
if canvas_size < min_size:
canvas_size = min_size # Canvas size must be >= 100
lbl_frame.configure(height=canvas_size) # Scale canvas size with window
lbl_frame.configure(scrollregion=lbl_frame.bbox("all"))
# Set scrollregion to the total region of all elements in the frame
menu.bind("<Configure>", lambda e: canvas_resize(e))
请注意,元素会在此之后不久添加到框架中。因为我添加它们的过程很长,并且包含很多与我的问题无关的东西,加上我添加这些元素没有任何问题,我决定不包括那部分。
【问题讨论】:
-
我很确定有一个问题涉及使用滚动条和画布
-
@Matiiss 我检查了示例代码,据我所知,我已经完成了那里所做的一切。如果您知道任何其他帖子,请随时链接它们。那个我还没有看过,所以看看还是不错的!
-
stackoverflow.com/questions/3085696/… 这是另一个可能有帮助的问题
-
搞清楚了。感谢您的帮助:)
标签: python tkinter canvas scrollbar