有没有一种简单的方法可以在没有图像的情况下为Kivy Labels,Buttons,Widgets等添加边框?

时间:2014-05-29 22:06:50

标签: python border styling kivy

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

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

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

我知道使用BorderImage绘制边框是可能的,但我想在没有图像的情况下添加简单的边框。

以下是目前的情况: Screenshot of border demo app

您可以在此处找到我的源代码(可以拖动标签仅用于测试目的,以确保边框始终正确定位):

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

现在看起来我想要它: Screenshot of Button with border

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