有没有一种简单的方法可以在没有图像的情况下为 Kivy 标签、按钮、小部件等添加边框?

Posted

技术标签:

【中文标题】有没有一种简单的方法可以在没有图像的情况下为 Kivy 标签、按钮、小部件等添加边框?【英文标题】:Is there a simple way to add a border to Kivy Labels, Buttons, Widgets etc. with-out images? 【发布时间】:2014-07-19 13:51:40 【问题描述】:

我正在尝试为 Kivy 按钮添加边框,但它没有按预期工作。 对于标签,我的实现似乎没问题,但对于按钮,它会覆盖/清除按钮的标准外观。

如何在不改变正常行为的情况下在按钮上方绘制边框?我想像 ButtonBehavior 一样实现它,这样我就可以使用画布为每个 Kivy 对象添加边框。我称之为 BorderBehavior。

样式虚线,点线仅适用于线宽为 1,因为 Kivy 中存在错误(请参阅 https://github.com/kivy/kivy/issues/2037)(稍后需要弄清楚这里有什么问题。)

我知道使用 BorderImage 可以绘制边框,但我想添加简单的边框而不使用图像。

这是它目前的样子:

你可以在这里找到我的源代码(可以拖动标签只是为了测试目的,看看边框是否总是正确定位):

https://gist.github.com/AWolf81/c6796dc2049d9872b2df

【问题讨论】:

gist 中的代码是一段非常有用的代码,用于在 GridLayouts 上的框周围设置边框。 【参考方案1】:

好的,我找到了解决方法。这是一个命名冲突。

在控制台日志中,我看到在按钮的 BorderImage 中解包边框元组时出现问题。 当然,这是行不通的,因为我的边界实现方式不同。也许我可以将列表(上、右、下、左)添加到我的边框实现中,这样我就可以保持相同的名称。但我还没有检查过。

在 python 和 kv 中将我的边框的命名更改为边框修复了问题:

class BorderBehavior(Widget):
    borders = ObjectProperty(None)

现在看起来我想要它:

好的,现在我将检查它是否也适用于其他类(例如 Scatter、Widget、...)。如果这有效,我正在向 Kivy 发出拉取请求。

【讨论】:

我会在 1.9.2-dev 上检查它,宽度为 1 的虚线正在工作,任何其他宽度都不是 :(

以上是关于有没有一种简单的方法可以在没有图像的情况下为 Kivy 标签、按钮、小部件等添加边框?的主要内容,如果未能解决你的问题,请参考以下文章

有没有一种方法可以在不使用大量分支语句的情况下为无符号整数编写 qsort 比较函数?

如何在不改变文本透明度的情况下为 UILabel 设置背景图像并调整其 alpha?

是否可以在不循环的情况下为 iSeries 表中的每一行生成唯一的数值?

如何在没有 SDK 的情况下为 webjobs 设置警报

是否可以在没有自动布局的情况下为 iPad 设计视图?

有没有一种简单的方法来查看图像每个点的强度?