我试图让某种标签透明,里面有文字。问题是文本不在布局中,我不知道为什么。
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
答案 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)
...
这样,只要相对布局的位置或大小发生变化,矩形就会更新。