我正在尝试开发一款kaivy应用程序,我对此很新。我尝试用两个按钮制作一个简单的屏幕,但我只看到一个按钮(button1,签入)。我想并排显示两个按钮。任何帮助都非常感谢。
from kivy.app import App
from kivy.lang import Builder
button1 = '''
FloatLayout:
Button:
text: 'Check In'
size_hint: None, None
pos_hint: {'center_x': .5, 'center_y': .5}
canvas.before:
PushMatrix
Rotate:
angle: 0
origin: self.center
canvas.after:
PopMatrix
'''
button2 = '''
FloatLayout:
Button:
text: 'SOS'
size_hint: None, None
pos_hint: {'center_x': 1.5, 'center_y': 1.5}
canvas.before:
PushMatrix
Rotate:
angle: 45
origin: self.center
canvas.after:
PopMatrix
'''
class RotationApp(App):
def build(self):
return Builder.load_string(button1)
def build2(self):
return Builder.load_string(button2)
RotationApp().run()
答案 0 :(得分:1)
当你的应用程序运行时,kivy运行build
方法并使用返回的小部件作为根小部件。在你的情况下,你从button1字符串返回按钮,就是这样,完成了工作。
问题是kivy不知道或不关心您编写了build2
方法,它没有调用它,也不会知道如何处理返回的小部件,即使它确实如此。
有很多方法可以创建两个相邻的按钮,我不确定你的总体目标是什么,但一个简单的选择就是修改你的一个kv语言字符串以包含相同布局中的两个按钮。我将FloatLayout
替换为BoxLayout
,它会自动将它们调整为相邻:
button1 = '''
BoxLayout:
Button:
text: 'Check In'
size_hint: None, None
pos_hint: {'center_x': .5, 'center_y': .5}
canvas.before:
PushMatrix
Rotate:
angle: 0
origin: self.center
canvas.after:
PopMatrix
Button:
text: 'SOS'
size_hint: None, None
pos_hint: {'center_x': 1.5, 'center_y': 1.5}
canvas.before:
PushMatrix
Rotate:
angle: 45
origin: self.center
canvas.after:
PopMatrix
'''
我没有尝试过这段代码,你可能会从旋转中得到一些奇怪的行为/重叠,但是放置相邻小部件并让它们都显示出来是正确的一般想法。
答案 1 :(得分:0)
我在浮动布局中使用它来添加3个按钮
<Button>:
font_size:15
color:1,0.1,0.1,1
size_hint:0.1,0.1
<FloatLayout>:
Button:
pos_hint: {"left":1}
text:"Subscribe"
Button:
pos_hint: {"x":0.5,"top":0.5}
text:"Login"
Button:
pos_hint: {"right":1}
text:"Signup"