内容更改时停止文本小部件滚动

2024-04-16

我有一个带有滚动条的文本小部件,看起来像这样:

self.myWidget = Text(root) 
self.myWidget.configure(state=DISABLED)
self.myWidget.pack()

self.myWidgetScrollbar = Scrollbar(root, command=self.myWidget.yview)
self.myWidget.configure(yscrollcommand=self.myWidgetScrollbar.set)
self.myWidgetScrollbar.pack(side=LEFT,fill=Y)

文本小部件每秒更新 4 次:

self.myWidget.configure(state=NORMAL)
self.myWidget.delete(1.0, END) 
self.myWidget.insert(END, "\n".join(self.listWithStuff))  
self.myWidget.configure(state=DISABLED)

问题是,当我尝试滚动时,它会不断将我滚动回顶部(可能每秒 4 次)。我认为这是因为所有内容都被删除了。

如何防止它自动滚动,或者在内容更改时可能“向后”滚动?


您可以保护该位置并在更新后将其设置回来,就像以下 Tcl 代码所做的那样:

proc update_view {w s data} {
  # store position
  set pos [$s get]
  $w configure -state normal -yscrollcommand {}
  $w delete 1.0 end
  $w insert end $data
  $w configure -state disabled -yscrollcommand [list $s set]
  $s get
  $s set {*}$pos
}

Tkinter 代码看起来类似,如下所示:

def update_view(self, data):
    pos = self.myWidgetScrollbar.get()
    self.myWidget.configure(yscrollcommand=None, state=NORMAL)
    self.myWidget.delete(1.0, END)
    self.myWidget.insert(END, data)
    self.myWidget.configure(yscrollcommand=self.myWidgetScrollbar.set, state=DISABLED)
    self.myWidgetScrollbar.get()
    self.myWidgetScrollbar.set(pos)

不知道为什么需要中间的 get() ,也许是为了强制进行一些查找,但它有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内容更改时停止文本小部件滚动 的相关文章

随机推荐

  • “GONE”视图是否会损害性能?

    我正在制作一个应用程序 它可以节省我一些时间 多个活动有一个布局 其中一些视图设置为 GONE 消失 具体取决于正在使用的活动 我知道布局中包含大量视图可能会导致性能不佳 如果我有一个具有大量视图的活动 但其中很大一部分视图都消失了 那么该
  • 在 uiimageview 中加载大图像时的内存消耗

    我正在使用 UIViewContentModeScaleAspectFit 将大小为 2480 3508 的 UIImage 加载到 UIImageView 中 我在加载此图像时收到内存警告 当我在此 UIImageView 中加载一些此尺
  • 如何从列类型列表中的 pandas DataFrame 中删除空值

    只是期待一个从具有列表值的列中删除空值的解决方案 从某种意义上说 我们已经事先替换了一些字符串 它是列表的字符串表示形式的列 In df color我们只是更换 Blue带空字符串 示例数据框 df pd DataFrame Bird pa
  • Visual Studio 2012 Ultimate 新依赖图错误

    每次使用 Visual Studio 2012 Ultimate 创建新的依赖关系图时 我都会收到此错误 Unable to connect to the specified database An exception occurred a
  • 在Python中插入lxml树时出现属性错误

    我正在尝试将 xml 的小结构注入到现有 xml 文件中的特定位置
  • href 链接不可点击或不可突出显示

    我不完全确定为什么我的 a href 链接不起作用 在某个时间点它起作用了 我对 Z Index 做了一些研究 但这似乎不是问题 也不是我有一个重叠的 div 吗 请访问JSFIDDLE NET https jsfiddle net t9v
  • Ajax 如果超过一个 @mention

    我正在尝试使用 jquery ajax php 制作一个 facebook 和 twitter 风格的提及系统 但如果我尝试 提及多个用户 我就会遇到问题 例如 如果我开始输入如下内容 Hi stack how are you 结果显示 s
  • 将列添加到现有红移表

    我有一个包含超过 30m 条记录的数据库 我需要向数据库添加两个新列 问题是我需要这些列不为空 并且没有默认值 我以为我只需添加这些没有 NOT NULL 约束的列 用数据填充它们 然后添加约束 但 Redshift 不支持这一点 我心里有
  • 如何使用代码在 ios 应用程序中录制屏幕视频?

    就像苹果商店中的 ShowMe 应用程序一样 用户可以绘画并将动作录制为视频 你们知道如何在代码中做到这一点吗 谢谢 我们最近遇到了这个问题 并发现了一篇精彩的文章 其中使用了视图层和媒体框架 在这里查看链接 http codethink
  • Swift 协议只能设置吗?

    为什么我可以毫无错误地执行此操作 var testDto ModelDto modelId 1 testDto objectId 2 当我定义这个时 protocol DataTransferObject var objectType Dt
  • 浮动操作按钮不显示矢量资源

    I m trying to setup a vector asset into a fab But the result is like this As you can see the vector is there but way dow
  • 有没有办法在Oracle表的指定位置添加列? [复制]

    这个问题在这里已经有答案了 考虑一下我在 Oracle 10G 中创建的初始表 CUSTOMER ID ACC NO ACC BALANCE 100 200 1000 101 150 4000 102 350 2000 103 450 25
  • FFmpeg - 找不到 ExecuteBinaryResponseHandler - Android/Java

    我正在尝试制作一个用于反应原生的模块 它将把视频变成 gif 我对 android studios java 几乎没有经验 但我很想了解更多 我在用这个图书馆 https github com WritingMinds ffmpeg and
  • React Native 箭头函数和“if”语句

    我刚刚接受了箭头函数的教育 以及当您开始使用子函数时它们如何帮助提高可见性React Native 和全局可访问的对象 https stackoverflow com questions 50209526 react native and
  • gdb:“未加载符号表”

    尝试在 gdb 中添加断点时 我不断收到此错误消息 我使用这些命令来编译 gcc g main c utmpib2 c o main o and cc g main c utmpib2 c o main o and also g g mai
  • 升级到 RN 0.68 后 APK 中缺少 index.android.bundle

    将我们的 RN 应用程序升级到 RN 0 68 后 我们在发布版本中遇到错误 FATAL EXCEPTION create react context Process com app PID 15057 java lang RuntimeE
  • 应用程序的私有文件

    我想创建一个文件来存储一些只能由我的应用程序访问的数据 外部用户不应该能够访问该文件或对其进行任何更改 我将在文件中存储一个密钥 该密钥可能由我的应用程序访问需要时随时使用应用程序 使用Environment getDataDirector
  • Meteor如何调用Meteor.methods()中定义的方法?

    我将方法分配给 Meteor 服务器 如下所示 在 bootstrap js 中 Meteor startup function Meteor methods foo function return 1 bar function QUEST
  • Direct2D 位图画笔拉长

    我必须在屏幕外位图上绘制形状 但是当我尝试渲染位图时遇到一个奇怪的问题 这就是图像的显示方式 这就是我查看位图的方式 以下是我用来创建位图画笔的代码 const auto size renderTarget gt GetSize const
  • 内容更改时停止文本小部件滚动

    我有一个带有滚动条的文本小部件 看起来像这样 self myWidget Text root self myWidget configure state DISABLED self myWidget pack self myWidgetSc