python - Tkinter 滚动条对我的画布大小没有反应
问题描述
我正在尝试实现一个滚动条,它将滚动浏览画布窗口中的一个框架。据我所知,画布、框架和框架元素都运行良好。我在框架中添加或删除元素没有任何问题,它们会按我的意愿显示。唯一的问题是滚动条。
滚动条根本不起作用。它准确地显示在它应该出现的位置,但它根本不会对画布或框架元素做出反应。如果我调整窗口大小并压下画布,滚动条什么也不做——它只是保持空白,就好像它没有任何东西可以滚动一样。
我承认还有一百万个关于画布中滚动条的其他问题,但我已经尽可能多地仔细阅读了这些问题,但没有找到任何解决我问题的方法。因此,我问:知道我哪里出错了吗?
任何有关可能修复的反馈或建议将不胜感激。
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))
请注意,元素会在此之后不久添加到框架中。因为我添加它们的过程很长,并且包含很多与我的问题无关的东西,而且我在添加这些元素时没有任何问题,所以我决定不包括那部分。
解决方案
我想到了。这与我添加元素的方式有关。我将它们添加到画布上,而不是框架上。所以框架是空的。
推荐阅读
- python - Python 和 pandas:如何使用 df.loc 根据条件创建新列?
- c# - IIS 停止并出现错误消息“HTTP 错误 503。服务不可用”
- r - 如何在闪亮的 r 中使用条件面板()
- swift - Xcode - 向 .gitignore 添加条目不起作用
- angular - 角度对话框问题
- csv - BigQuery 错误从云存储传输 csv
- ruby-on-rails - Sprockets::FileNotFound: 将 Rails 6 应用程序部署到 Heroku 时找不到类型为“text/scss”的文件“jquery-ui”
- rdp - RDP如何显示无头服务器的屏幕?
- flutter - 在 Flutter Desktop 中将监视器输出发送到 LCD 投影仪
- angular - android上的Nativescript底部导航未按预期呈现