为什么标签不在布局中?

时间:2016-12-20 14:40:40

标签: python user-interface layout kivy

我试图让某种标签透明,里面有文字。问题是文本不在布局中,我不知道为什么。

ind <- unname(unlist(lapply(split(v, cumsum(c(1, diff(is.na(v)) != 0))), function(i) 
                                                           c(head(i, 1), tail(i, 1)))))

ind[!is.na(ind)]

#[1]  1  9 27 41

2 个答案:

答案 0 :(得分:1)

当您使用任何布局时,您应该使用size_hint,然后使用从0到1(0%到%100)的比例坐标。但是,如果您想尊重size,则应将size_hint设置为(None, None)停用{/ 1}}:

from kivy.core.window import Window
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.relativelayout import RelativeLayout
from kivy.uix.button import Label, Button
from kivy.graphics import Rectangle,Color

class Visor(App):

    def build(self):
        Window.size=(400,600)
        print(Window.size)

        r = RelativeLayout()
        r.size_hint = (None, None) 
        r.size = (400, 550)
        with r.canvas:
            Color(0.6, 0.6, .1, 0.8)
            bg_rect =  Rectangle(pos=(0,0), size=(400, 550))

        r2 = FloatLayout()
        r2.size_hint = (None, None) 
        r2.size=(100,150)
        with r2.canvas:
            Color(.9, 0.1, 0.6, 0.8)
            bg_rect = Rectangle(pos=(0, 0), size=(200,150))

        r2.pos=(50,70)
        r.add_widget(r2)
        r2.add_widget(Label(text="Detective Comics Vol.1 #878"))
        return r

if __name__ == "__main__":
    Visor().run()

此外,您应该使用Kivy语言,它更容易,并且可以轻松地在内部绑定属性。

将此代码添加到文件头部可以帮助您发现布局问题:

from kivy.lang import Builder
Builder.load_string('''
<Widget>:
    canvas.after:
        Line:
            rectangle: self.x+1,self.y+1,self.width-1,self.height-1
            dash_offset: 5
            dash_length: 3
''')

有关解释和其他技巧,go here

答案 1 :(得分:0)

Kivy小部件有一个属性size_hint,可根据父项大小调整小部件的大小。默认设置为(1,1),因此每当父级调整大小时,子级都会调整大小。

设置矩形的大小时,这些是由绝对值给出的,绝对值根本不会调整大小。这意味着彩色矩形不是布局的“真实”尺寸。

至少对我来说,当应用程序启动时,窗口会立即调整大小,并使用根窗口(r)。然后,所有子窗口小部件都会调整为窗口大小的100%,但彩色矩形不会调整大小。

如果您将标签的size_hint设置为None, None,则不会进行调整大小,并且应该按照您的需要显示。

也许更好的方法是在kv语言文件中定义矩形等。即。

RelativeLayout:
    Label:
        text: "Detective Comics Vol.1 #878"
    canvas:
        Color(0.8, 0.8, .1, 0.8)
        Rectangle(pos=self.pos, size=self.size)
...

这样,只要相对布局的位置或大小发生变化,矩形就会更新。