动态调整滚动视图中标签的大小?

2023-12-07

假设您有如下设置:

ScrollView:
   size_hint: (1, 0.5)

   Label:
      size_hint: (1, None)

最初,标签没有内容/文本。如果我理解正确的话,当创建对象时,标签的高度是None.

当应用程序运行时,标签的text属性设置为多行文本,这会将 Label 的内容推到 ScrollView 的边界之外。然而,为了发生滚动,似乎标签的 y 尺寸/高度必须动态调整大小。

根据标签的新内容动态调整标签高度以便可以发生滚动操作的最佳方法是什么?


实际文本显示在一个矩形中,其大小为not默认情况下与标签尺寸耦合。当文本量很大时,文本会变大并可能超出标签边界,但不会调整标签大小。

控制显示文本的实际大小的相关属性是Label.text_size。要获得您想要的行为,您可以简单地执行以下操作:

ScrollView:
   size_hint: (1, 0.5)

   Label:
      size_hint: (1, None)
      height: self.text_size[1]

这会绑定标签的高度以跟踪显示文本的高度,因此应该为您提供所需的行为。

作为旁注,更改或观看通常很有用text_size。例如,要使文本在标签的边缘换行而不是依赖手动换行符,您可以设置text_size: self.size这意味着如果文本宽度超过标签宽度,文本将自动换行。如果使用 halign 或 valign,这也很重要,它们控制其纹理中的文本位置,并且not在标签本身内 - 除非您手动将 text_size 设置为(再次)大于文本实际占用的空间,否则这些属性不会产生可见的效果。

编辑:根据您下面的评论,这是我的一个应用程序中的标签示例,如果文本长度增加,标签会垂直增长(以便用户可以滚动),但当文本宽度大于标签时,它也会自动换行宽度。看来我实际上是通过将标签放入 GridLayout 中来做到这一点的,我隐约记得出于某种原因这很重要。

GridLayout:
    cols: 1
    spacing: 10
    size_hint_y: None
    height: thetb.texture_size[1]

    Label:
        id: thetb
        text: 'whatever'
        text_size: self.width, None
        size_hint: (1, None)
        size: self.parent.width, self.texture_size[1]

您可以看到我使用 text_size 来控制文本边界框(因此它在标签边缘处环绕),但绑定 GridLayout 高度以真正跟踪texture_size 高度。 GridLayout 放置在 ScrollView 中,我得到的正是我认为您想要的行为。

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

动态调整滚动视图中标签的大小? 的相关文章

  • Kivy:App.root 中的实例无效

    我是Python和Kivy的新手 这是我的第一个小项目 不知道我做错了什么 以下是来自pydev eclipse 的日志 INFO Kivy v1 8 0 INFO Logger Record log in C Users Sudheer
  • Kivy 文件选择器双击

    有人可以发布一个带有以下简单双击功能的 kivy Filechooser 的小型工作示例 双击文件将打印出文件名吗 这是一个例子 from kivy app import App from kivy uix filechooser impo
  • Kivy RecycleView 作为 ListView 的替代品?它是如何工作的?

    我应该先说一下 我仍然是 Kivy 的新手 我尝试寻找类似的问题 但它们要么过时 要么不清楚 我正在寻找一些东西来显示元素列表 用户可以在其中选择一个元素来与其他小部件 按钮等 进行交互 我偶然发现了ListView 上的文档页面 http
  • 更改 Kivy 中按钮的背景颜色

    我是 Kivy 的新手 在指定按钮的背景颜色时遇到困难 这是我的简单例子 custombutton py from kivy app import App from kivy uix widget import Widget class M
  • Python+kivy+SQLite:如何一起使用它们

    我是 python kivy 和 sqlite 的新手 但我必须完成这项艰巨的任务 任何形式的帮助将不胜感激 提前致谢 任务是 显示来自 db文件上的kivy安卓上的屏幕 我制作了数据库文件http zetcode com db sqlit
  • 如何让 Kivy 显示文本输入框?

    我目前正在 Kivy 中为一个学校项目编写一个应用程序 我不得不深入使用 Kivy 我已经为文本输入编写了 kv 代码 您可以在下面看到 AnswerInput
  • 如何使用 KivyMD 在 NavigationDrawer 内的屏幕之间切换

    我是使用 kivymd 的初学者 并尝试使用 KivyMD 在 NavigationDrawer 内的屏幕之间切换 我正在阅读一些文档并最终得到了这段代码 但它对我不起作用 from kivy lang import Builder fro
  • Kivy:如何向文本输入添加填充

    这里只是一个简单的问题 我想在我的文本输入框中添加一些 填充 以便将其与上面的标签对齐 请参阅here https pasteboard co fx1Sa6ki7 png 以下是我的 kv 文件的相关部分
  • Kivy/Python Countdown App 项目 kivy has no attribute 'built' 错误

    问题 什么是 没有属性 构建 错误 我需要做什么来更正此代码 以便它可以接受日期时间对象并显示倒计时 抱歉发了这么长的帖子 我已经提供了代码和链接 kv 文件 https github com tmusa CySat GroundStati
  • Kivy 和 android 共享首选项

    我正在寻找一种从 Kivy 框架在 Android 设备上持久存储设置的方法 我发现 Kivy 文档总体信息丰富 但在这个特定领域含糊不清 它提到了三种方法 抱歉 没有足够的声誉来提供可点击的链接 相对路径kivy org假如 如果有人可以
  • Kivy AttributeError:“超级”对象没有 ScreenManager 的属性“__getattr__”[重复]

    这个问题在这里已经有答案了 我正在尝试将方法绑定到微调器的文本值 最迟需要在显示 TestScreen 时进行绑定 如果我不使用 ScreenManager 这将有效 例如 如果 TestApp build 返回 TestScreen 而不
  • x11 - 导入错误:没有名为“kivy.core.window.window_x11”的模块

    当我尝试在我的 kali linux 操作系统中使用 python 3 5 运行任何 kivy 程序时 然后我收到以下错误 程序 from kivy app import App from kivy lang import Builder
  • 在 Playstore 中发布现成的 Kivy 应用程序之前的流程?

    我已经做了buildozer android debug并拥有 apk文件已安装并且工作正常 至少针对一个 两个设备进行了测试 这也是半默认的buildozer spec 例如 域名仍然是org test但随着应用程序的名称进行了调整 有了
  • Kivy 中的 HTTPS 请求

    我一直在处理与通过 AWS API Gateway 托管的 API 绑定的 Kivy 应用程序中的 HTTPS 请求 首先 我从Python3迁移到2 然后从requests库迁移到kivy的URLRequest 该应用程序在我的 Linu
  • Kivy 弹出窗口在单独的线程中运行

    我正在 Kivy 中填充一个树视图 这需要一些时间 具体取决于它的大小 在树很大并且需要一段时间的情况下 我想在填充时显示一个弹出窗口 以便用户知道程序尚未冻结 并在填充树的逻辑完成时关闭此弹出窗口 这是我通过对该主题的一些研究得出的结论
  • 如何在 Kivy 中设置小部件/布局的最小允许宽度/高度?

    我有包含 3 个元素的 BoxLayout 我需要第一个和最后一个元素占据最小的可用空间 中间元素具有固定比例 1 1 因此当我调整窗口大小时 侧面元素变得太小并且内容会超出其中 我需要例如标签 或按钮 甚至不同元素的集合 文本始终insi
  • Kivy:滚动缩放

    有没有办法在桌面 kivy 应用程序上放大图像 例如使用鼠标滚轮缩放 这里似乎讨论过 https github com kivy kivy issues 3563 https github com kivy kivy issues 3563
  • x11 - 导入错误:没有名为“kivy.core.window.window_x11”的模块

    目前我正在尝试构建一个我通过 buildozer 用 Python 和 Kivy 编写的应用程序 无论我在做什么 我都会遇到 window x11 的问题 即使我在代码中注释掉所有与 Windows 相关的内容或执行本文中描述的所有操作 这
  • 如何为每个屏幕添加自己的 .py 和 .kv 文件?

    我想为每个屏幕都有一个单独的 py 和 kv 文件 应通过 main py main kv 中的 ScreenManager 选择屏幕 设计应从文件 screen X kv 加载 类等应从文件 screen X py 加载 Screens
  • Kivy - 文本换行工作错误

    我正在尝试在 Kivy 1 8 0 应用程序中换行文本 当没有太多文字时 一切正常 但如果文本很长并且窗口不是很大 它只是剪切文本 这是示例代码 vbox BoxLayout orientation vertical size hint y

随机推荐

  • 在c#中解析阿拉伯日期

    在我正在编写的应用程序中 我想解析 C 中阿拉伯语的特定日期 例如 日期可能如下所示 但我想要这个输出 30 12 1989 我的问题是如何在 C 中执行此操作以从此字符串中获取 DateTime 对象 谁能告诉我该怎么做 东方阿拉伯数字不
  • 带有字母 A-Z 或其他自定义范围的 jQuery UI Spinner

    有没有办法自定义 jQuery UI 微调器 以便可以使用 A Z 字母 或任何自定义范围 是的 这是可能的 这是一个使用 A Z 的简单示例 改编自提供的时间示例 widget ui alphaspinner ui spinner opt
  • Javascript 中的 RTL 确认和警报

    你能做一个confirm or alert显示其消息 RTL 并右对齐 尝试在消息的开头添加以下内容 u200f u200f 例如 alert u200f u200f message or confirm u200f u200f messa
  • 如何向 PropertySheet 添加夹具?

    我有一个类源自CPropertySheet 我想在对话框的右下角插入一个 夹具 我的对话框已经可以调整大小 我只是无法插入夹具 不知道有没有什么特殊的API可以做到这一点 一种选择是手动绘制它 然后覆盖ON WM NCHITTEST并返回H
  • 如何跟踪递归函数 C++

    include
  • 如何将 MySQL 触发器异常/失败信息存储到表或变量中

    我被困在某个地方 需要你的帮助 Scenario 我有两个数据库 即test db1 and test db2并有users桌子上有他们两个 两个数据库最初都是空的 0 行 Here s users表架构 DROP TABLE IF EXI
  • 从 pandas 数据框创建列表字典

    我正在尝试创建基于 pandas 数据框的列表字典 我需要一个列表字典来传递给我的 Plotly 仪表板 In df head Model Make Ford F 150 Ford Escape Ford Mustang Jeep Gran
  • Facebook iOs sdk iphone:从多个视图控制器调用

    我按照 facebook 开发文档的官方指南从我的 iPhone 应用程序实现 SSO 但所有持有 Facebook 类的成员都在同一个视图控制器中 现在考虑我想登录一个导航控制器的第一个视图控制器 然后从同一导航控制器的第三个视图控制器调
  • 运行应用程序时的 IntelliJ MyClass.class(没有此类文件或目录)

    我正在尝试在 IntelliJ 上运行我的 Android 应用程序 我从现有源创建了一个项目 并且已正确附加 SDK 一切运行正常 但当我尝试运行时 它会记录消息 Error MyClass class No such file or d
  • 找到 C 列的最后一行(然后 A 列和 B 列有不同的行大小)?

    如何找到 C 列最后使用的单元格 示例 Sheet1 Col A 和 Col B 有 1200 行 而 Col C 只有 1 行 ColA ColB ColC 1 1 1 2 2 empty 1200 1200 empty 这是我不成功的测
  • ASP.net 有效渲染元标记

    HTML 隐藏代码 MetaDescription Attributes content ThisBlog MetaDescription 这呈现为 As per 这个答案它不需要有 ID 属性 并以 gt 我怎样才能让它以这种方式渲染 我
  • 数据范围订阅奇怪的行为

    我在玩 swift 的Data在下面的小代码中 var d Data count 10 d 5 3 let d2 d 5 lt 8 print d2 0 令我惊讶的是 这段代码抛出异常print 而下面的代码则不然 var d Data c
  • 无 UI 的 WiX 命令行选项“/quiet”会终止正在运行的进程

    我使用 Wix 为我的应用程序创建了一个没有 UI 的安装包 此处称为 XYZ 如果我在 XYZ exe 运行时双击 MSI 它会通知我某个进程正在锁定文件 我可以选择终止锁定进程 也可以中止安装 这很好 作为用户我可以决定做什么 但是当我
  • JComboBox 上的 JScrollPane

    我制作了一个组合框 但某些元素比我的框的宽度更宽 所以我尝试添加一个水平滚动窗格 而我唯一能看到的是一个内部带有组合框的滚动窗格 当然我做错了什么 这是我没有 jscrolpane 的代码 issuerdocumentJComboBox n
  • Powershell 2 和 .NET:针对极大的哈希表进行优化?

    我正在涉足 Powershell 对 NET 完全陌生 我正在运行一个以空哈希表开头的 PS 脚本 哈希表将增长到至少 15 000 到 20 000 个条目 哈希表的键是字符串形式的电子邮件地址 值是布尔值 我只需要跟踪我是否看到过电子邮
  • 在表单身份验证中获取当前的 MembershipUser

    我想获取当前的MembershipUser从我的页面 Membership GetUser 返回空值 不能用 HttpContext Current User Identity Name 因为它根据我的配置返回我的配置文件名称以获取用户名
  • 重新训练 MobileNet SSD V1 COCO 后,Tensorflow 的 pb 和 pbtxt 文件无法与 OpenCV 一起使用

    我已关注this按照所述使用 Tensorflow GPU 重新训练 MobileNet SSD V1 的教程 使用 GPU 训练后损失为 0 5 下面有关配置的更多信息 并得到了model ckpt 这是我用于训练的命令 python m
  • 如何在maven中添加JaCoCo

    我已经使用 JUnit 编写了一个单元测试用例 现在我想在我的构建工具中添加 JaCoCo 该工具正在移动 3 2 1 我是 Maven 的新手 在添加它时 我不得不怀疑我想将它添加到依赖项或插件中吗 两者都可用 如下
  • Python:函数文档

    有没有一种方法可以检查 python 本身内部的函数或方法的作用 类似于 Matlab 中的帮助函数 我想获得函数的定义 而不必谷歌它 是的 您可以致电help whatever 在Python交互式解释器中 gt gt gt help T
  • 动态调整滚动视图中标签的大小?

    假设您有如下设置 ScrollView size hint 1 0 5 Label size hint 1 None 最初 标签没有内容 文本 如果我理解正确的话 当创建对象时 标签的高度是None 当应用程序运行时 标签的text属性设置