KivyLauncher: некорректное отображение на экране телефона - PullRequest
0 голосов
/ 10 апреля 2020

Я хочу нарисовать изображение (* .png файл) в FlayoutBox, на p c результат в порядке, после использования KivyLauncher на экране телефона только белый квадрат. Я протестировал два варианта для рисования ( draw_img_cnv и draw_img_wdg ), но оба результата плохие. Можете ли вы объяснить мне:

  • почему на экране телефона отображается белый квадрат,
  • почему draw_img_wdg не центрируется на p c,
  • Чем отличаются оба решения?

Спасибо!

from kivy.app import App
from kivy.graphics import Color, Rectangle, Ellipse
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.image import Image

import math

class Screen(FloatLayout):

    def __init__(self, **kwargs):
        super(Screen, self).__init__(**kwargs)
        self.li_item = []
        return

    def draw_img_cnv(self):
        size_img = (498, 498)
        pos_img = (self.center[0] -size_img[0]/2.0, self.center[1] -size_img[1]/2.0)

        with self.canvas:

            Color(0, 1, 0, 1)
            self.rect1 = Rectangle(size=self.size, pos=self.pos)
            self. rose = Image(source="rose.png",pos=pos_img,size=size_img )


    def draw_img_wdg(self):
        size_img = (498, 498)
        pos_img = (self.center[0] -size_img[0]/2.0, self.center[1] -size_img[1]/2.0)

        with self.canvas:

            Color(0, 1, 0, 1)
            self.rect1 = Rectangle(size=self.size, pos=self.pos)
        self. rose = Image(source="rose.png",pos=pos_img,size=size_img )
        self.add_widget(self.rose)
        return

class MainApp(App):

    def build(self):
        self.pos_sun = None
        root = BoxLayout(orientation = 'vertical')
        self.screen = Screen()
        button = Button(text = 'Press',size_hint=(1, None), height=50)

        root.add_widget(self.screen)
        root.add_widget(button)
        self.screen.draw_img_wdg()
        self.screen.bind(size=self._update_rect, pos=self._update_rect)
        return root

    def _update_rect(self, instance, value):
        self.screen.rect1.pos = instance.pos
        self.screen.rect1.size = instance.size
        self.screen.rose. pos = (instance.center[0] -498/2.0, \
                              instance.center[1] -498/2.0)
        return

if __name__ == '__main__':
    MainApp().run()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...