• При сборке apk KIVY под андройд программка запускается и сбрасывается, почему?

    @uvv99 Автор вопроса
    Победа! Нужно было добавить разрешение на доступ к камере и интернету в buildozer.spec
    Ответ написан
    Комментировать
  • Как решить ошибку AttributeError: 'NoneType' object has no attribute 'reshape'?

    @uvv99 Автор вопроса
    Еле разобрались, нашли выход:
    from kivy.app import App
    from kivy.lang import Builder
    from kivy.uix.screenmanager import ScreenManager, Screen
    from kivy.core.window import Window
    from kivy.clock import Clock
    from requests import get, post
    from kivy.uix.camera import Camera
    
    Window.size = (360, 480)
    Window.clearcolor = (0, .17, .55, 1)
    
    
    notice_list = []
    department = 'kmd'
    
    
    Builder.load_string("""
    <MenuScreen>:
        BoxLayout:
            orientation: 'vertical'
            padding: 5, 10
            spacing: 10
    
            Button:
                text: 'УВЕДОМЛЕНИЯ'
                background_color: 0, .12, .52, 1
            Button:
                text: 'ЗАКАЗЫ В РАБОТЕ'
                background_color: 0, .12, .52, 1
            Button:
                text: 'АРХИВ ЗАКАЗОВ'
                background_color: 0, .12, .52, 1
            Button:
                text: 'СКАНИРОВАНИЕ QR'
                background_color: 0, .12, .52, 1
                on_press: root.manager.current = 'settings'
    
    <ScanScreen>:
        BoxLayout:
        #:import ZBarCam kivy_garden.zbarcam.ZBarCam
            orientation: 'vertical'
            padding: 5, 10
            spacing: 10
    
            ZBarCam:
                id: qrcodecam
            Label:
                size_hint: None, None
                size: self.texture_size[0], 50
                text: ' , '.join([str(symbol.data) for symbol in qrcodecam.symbols])
    
            Button:
                text: 'РАБОТА НАЧАТА'
                background_color: 0, .12, .52, 1
                on_press: app.start()
            Button:
                text: 'РАБОТА ПРИОСТАНОВЛЕНА'
                background_color: 0, .12, .52, 1
            Button:
                text: 'РАБОТА ЗАКОНЧЕНА'
                background_color: 0, .12, .52, 1
                on_press: root.manager.current = 'menu'
    """)
    
    class MenuScreen(Screen):
        pass
    
    class ScanScreen(Screen):
        pass
    
    
    def get_notice(_):
        for i in get(f'http://127.0.0.1:8000/api/notice/{department}').text.split(','):
            if i != '':
                notice_list.append(i)
    
    
    class MainApp(App):
        def build(self):
            sm = ScreenManager()
            sm.add_widget(MenuScreen(name='menu'))
            sm.add_widget(ScanScreen(name='settings'))
            return sm
    
        def start(self):
            r = get(f'http://127.0.0.1:8000/api/give_csrf')
            csrf = r.text.split('=')[-1][1:-2]
            cookies = r.cookies.get_dict()
    
            post(f'http://127.0.0.1:8000/api/qr_start/{department}',
                  data = {'id': notice_list, 'csrfmiddlewaretoken': csrf},
                  cookies = cookies)
    
    
    if __name__=='__main__':
        Clock.schedule_interval(get_notice, 3)
    
        MainApp().run()
    Ответ написан
    Комментировать