Я пытаюсь включить рекламу в приложение Kivy, которое я сделал, и для этого я хочу, чтобы один класс (с рекламой) в FloatLayout находился вверху моего экрана, а остальная часть приложения чтобы быть ниже, в отдельном классе.
Я пытался заставить это работать с некоторым тестовым кодом (простой файл .py и .kv, который имеет несколько экранов и классов и организует соответственно). Предполагается, что в коде есть две разметки с плавающей точкой: одна содержит текст, другая имеет кнопку, которую вы нажимаете, и вы переходите на следующий экран. Однако проблема, с которой я сталкиваюсь, заключается в том, что я не могу правильно расположить кнопку, так как виджет сокращается в левом нижнем углу. Он должен быть рядом с текстовым полем.
Вот мой файл .kv:
WindowManager:
Screen1:
Screen2:
<Screen1>:
name: "screen1"
FloatLayout:
Label:
pos_hint: {'top': 1, "center_x": 0.5}
size_hint: (0.2, 0.5)
font_size: 40
text: "TEXT AT TOP OF SCREEN"
FloatLayout:
TextInput:
pos_hint: {"x": 0.1, "y": 0.05}
size_hint: (0.3, 0.05)
multline:False
GoS:
FloatLayout:
Button:
text: "PRESS TO GO TO SCREEN 2"
pos_hint: {"right": 0.5, "center_y": 0.7}
on_press: widget.goscreen()
<Screen2>:
name: "screen2"
Label:
text: "YOU ARE ON SCREEN TWO"
, а вот файл .py:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.screenmanager import ScreenManager, Screen
class Screen1(Screen):
pass
class GoS(Widget):
def goscreen(self):
self.parent.current = "screen2"
class Screen2(Screen):
pass
class WindowManager(ScreenManager):
pass
kv = Builder.load_file("rec_view.kv")
class TestApp(App):
def build(self):
return kv
if __name__ == "__main__":
TestApp().run()
Почему это происходит?
Еще один маленький момент заключается в том, что моя кнопка не работает, потому что я не могу вызвать правильный класс. Если я использую «root .goscreen ()», он не будет работать, так как мой виджет root не имеет этой функции. Какой должен быть правильный синтаксис здесь?