Невозможно использовать "root.top-self.height" для правильного размещения в kivy - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь создать меню, используя макет коробки в kivy.Я хотел использовать «root.top-self.height», чтобы он вставлял вертикальный макет сверху экрана, но он все еще торчал снизу.Также, когда я печатаю (root.top), это странно дает 100, что не мое разрешение экрана.Пожалуйста, дайте мне знать, как я могу разместить его точно.Кроме того, я где-то читал, что мне нужно использовать root = BoxLayout (), теперь, после использования этого, кнопки не нажимаются после добавления этого, до добавления этого я мог использовать кнопки.Пожалуйста, дайте мне знать, как работать с «root», то есть с экраном или размером приложения.

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.label import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.layout import Layout
from  kivy.uix.button import Button
from kivy.lang import Builder



## CREATING A CLASS WHICH HAS SCREEN CONTENT:
class firstScreen(BoxLayout):
    def __init__(self,**kwargs):
        super(firstScreen, self).__init__(**kwargs)
        self.orientation = 'vertical'
        root = BoxLayout()
        self.pos = (0 ,root.top-self.height)
        print(root.top)

        self.myButton1 = Button(text='Home',
                              color = (1,0,0,1),
                              size_hint = (0.1,None),
##                              pos_hint = {'x':.8, 'y':'.7'},
##                              pos_hint = {'x':0, 'top':'0'},
                              pos = (0,0)
                              )
        self.myButton2 = Button(text='Buy Now',
                                color = (1,0,0,1),
                              size_hint = (0.1,None))
        self.myButton3 = Button(text='Blog',
                                color = (1,0,0,1),
                              size_hint = (0.1,None))
        self.myButton4 = Button(text='Contant Us',
                                color = (1,0,0,1),
                              size_hint = (0.1,None))

        self.add_widget(self.myButton1)
        self.add_widget(self.myButton2)
        self.add_widget(self.myButton3)
        self.add_widget(self.myButton4)

    def on_touch_down(self,touch):
        print(touch)
    def on_touch_move(self,touch):
        print(touch)
    def on_touch_up(self,touch):
        print(touch)

## CREATING A CLASS WHICH RETURNS SOME SCREEN:
class myKivyApp(App):
    def build(self):
        return firstScreen()

## THIS CODE RUNS THE CLASS WHICH HAS SOME SCREEN
if __name__ == "__main__":
    myKivyApp().run()

1 Ответ

0 голосов
/ 24 ноября 2018

Исключение неиспользованного BoxLayout и установка компонента y для size_hint на 1.0 означает, что каждая кнопка будет делиться поровну в вертикальном пространстве, доступном для firstScreen.

class firstScreen(BoxLayout):
    def __init__(self,**kwargs):
        super(firstScreen, self).__init__(**kwargs)
        self.orientation = 'vertical'
        self.myButton1 = Button(text='Home',
                              color = (1,0,0,1),
                              size_hint = (0.1,1.0))
        self.myButton2 = Button(text='Buy Now',
                                color = (1,0,0,1),
                              size_hint = (0.1,1.0))
        self.myButton3 = Button(text='Blog',
                                color = (1,0,0,1),
                              size_hint = (0.1,1.0))
        self.myButton4 = Button(text='Contant Us',
                                color = (1,0,0,1),
                              size_hint = (0.1,1.0))

        self.add_widget(self.myButton1)
        self.add_widget(self.myButton2)
        self.add_widget(self.myButton3)
        self.add_widget(self.myButton4)

Кстати, root.top всегда будет 100 в методе __init__().100 является значением по умолчанию и не обновляется до тех пор, пока приложение фактически не отобразится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...