You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CTkScrollableFrame中实现自动滚动到底部功能?

解决CTkScrollableFrame自动滚动到底部的问题

CTkScrollableFrame本身没有内置的scroll_to_bottom()方法,但可以直接访问其内部的画布组件来实现滚动到底部的功能。

直接调用实现

在添加完新消息后,直接调用内部画布的yview_moveto()方法,传入参数1.0即可滚动到最底部:

self.chat_frame = ctk.CTkScrollableFrame(self.frame, height=400)
self.chat_frame.pack(pady=12, padx=10, fill="x")

# 添加新消息的逻辑 [...]

# 滚动到底部
self.chat_frame._scrollable_frame_canvas.yview_moveto(1.0)

封装成自定义方法(更贴合你的需求)

如果想要像示例中那样通过scroll_to_bottom()调用,可以继承CTkScrollableFrame添加自定义方法:

import customtkinter as ctk

class CustomScrollableFrame(ctk.CTkScrollableFrame):
    def scroll_to_bottom(self):
        # 调用内部画布的滚动方法
        self._scrollable_frame_canvas.yview_moveto(1.0)

# 使用自定义类
self.chat_frame = CustomScrollableFrame(self.frame, height=400)
self.chat_frame.pack(pady=12, padx=10, fill="x")

# 添加新消息后调用
self.chat_frame.scroll_to_bottom()

注意:CTk内部带下划线的属性(如_scrollable_frame_canvas)属于非公开API,后续版本更新可能会有变动,但当前主流版本(如5.x系列)均可正常使用。

内容的提问来源于stack exchange,提问作者Uami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:54:54