Как собрать данные с экрана kivy, сохранить их и вывести график на выходной экран для печати - PullRequest
0 голосов
/ 24 марта 2020

Я создаю приложение с Kivy GUI. Я хотел бы собрать некоторые данные с экрана, а затем сохранить эти данные для графика на последнем экране, называемом «вывод», возможно, с использованием matplotlib. Я действительно новичок в кодировании, и я не могу понять, как сохранить данные с экрана «LtpLayout», чтобы манипулировать ими с некоторой математикой (numpy) и отобразить результаты на последнем экране под названием «Вывод».

.py файл:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image, AsyncImage
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.screenmanager import ScreenManager
from kivy.uix.screenmanager import Screen
from kivy.uix.screenmanager import FadeTransition
from kivy.uix.gridlayout import GridLayout
from kivy.lang import Builder
from kivy.uix.textinput import TextInput
import matplotlib.pyplot as plt
##from Kivy-Garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg non lo trova
from kivy.properties import ObjectProperty







class Output(Screen):

    pass

 ##   pass
class MyLayout(Screen):
    pass
class LtpLayout(Screen):
    def SaveData(self):
        PS1 = self.PS1.text

    pass
class ControlloSchermi (ScreenManager):

    pass

    def build(self):
        sm = ControlloSchermi()




class IntroApp(App):
    def build(self):
        return ControlloSchermi()


IntroApp().run()

и файл .kv:

#:import FadeTransition kivy.uix.screenmanager.FadeTransition

<ControlloSchermi>
   MyLayout:
   LtpLayout:
   Output:




<MyLayout>
   name: "main"
   BoxLayout:
      orientation: 'vertical'
      size: self.size

      canvas.before:
         Rectangle:
            pos: self.pos
            size: self.size
            source: "digital brain.jpg"


      Label:
         text: "Digital Psychometrics"
         font_size: 40
         bold: True

      Button:
         on_release: app.root.current = "LTP"

         font_size: 15

         text: "ACCEDI"
         bolf: True
         pos_hint_y: 0.5
         pos_hint: {'center_x': 0.5, 'center_y': .5}
         size: 200, 50
         size_hint_x: None
         size_hint_y: None

         background_normal: ''
         background_color: (0, 1, 1, 1)


      Label:
         text: ''
         pos_hint_y: 0.5
         pos_hint: {'center_x': 0.5, 'center_y': .5}
         size: 200, 50
         size_hint_x: None
         size_hint_y: None

<LtpLayout>

   name: "LTP"
   on_enter: PS1.focus = True


   BoxLayout:

      orientation: "vertical"
      canvas.before:
         Color:
            rgba: 0.03,0.1,0.16,1

         Rectangle:
            pos: self.pos
            size: self.size

      BoxLayout:
         size_hint_y: 0.1
         orientation: "horizontal"
         Label:
            canvas.before:
               Color:
                  rgba: 0.12, 0.47, 0.49,1
               Rectangle:
                  pos: self.pos
                  size: self.size
            text: "Tabella per l'inserimento degli input"
            bold: True
            font_size: 25


      GridLayout:
         padding: 40,10
         cols: 5
         size_hint_y: 0.8

         Label:

            text: "SCALE"
            bold: True
            font_size: 20

         Label:
            text: "Fase 1"
            bold: True
         Label:
            text: "Fase 2"
            bold: True
         Label:
            text: "Fase 3"
            bold: True
         Label:
            text: "Fase 4"
            bold: True

         Label:
            text: "Posture e sguardi"
            size_hint_x: 2.2



         TextInput:
            id: PS1
            hint_text: "Input"
            multiline: False

            on_text_validate: PS2.focus = True



         TextInput:
            id: PS2
            multiline: False
            hint_text: "Input"
            on_text_validate: PS3.focus = True


         TextInput:
            id: PS3
            multiline: False
            hint_text: "Input"
            on_text_validate: PS4.focus = True
         TextInput:
            id: PS4
            multiline: False
            hint_text: "Input"
            on_text_validate: IP1.focus = True

         Label:
            text: "Inclusione partners"

         TextInput:
            id: IP1
            hint_text: "Input"
            multiline: False
            on_text_validate: IP2.focus = True
         TextInput:
            id: IP2
            multiline: False
            hint_text: "Input"
            on_text_validate: IP3.focus = True
         TextInput:
            id: IP3
            multiline: False
            hint_text: "Input"
            on_text_validate: IP4.focus = True
         TextInput:
            id: IP4
            multiline: False
            hint_text: "Input"
            on_text_validate: IR1.focus = True

         Label:
            text: "Implicazione ruoli"

         TextInput:
            id: IR1
            hint_text: "Input"
            multiline: False
            on_text_validate: IR2.focus = True
         TextInput:
            id: IR2
            multiline: False
            hint_text: "Input"
            on_text_validate: IR3.focus = True
         TextInput:
            id: IR3
            multiline: False
            hint_text: "Input"
            on_text_validate: IR4.focus = True
         TextInput:
            id: IR4
            multiline: False
            hint_text: "Input"
            on_text_validate: ST1.focus = True

         Label:
            text: "Struttura e tempo"

         TextInput:
            id: ST1
            hint_text: "Input"
            multiline: False
            on_text_validate: ST2.focus = True
         TextInput:
            id: ST2
            multiline: False
            hint_text: "Input"
            on_text_validate: ST3.focus = True
         TextInput:
            id: ST3
            multiline: False
            hint_text: "Input"
            on_text_validate: ST4.focus = True
         TextInput:
            id: ST4
            multiline: False
            hint_text: "Input"
            on_text_validate: Cocos1.focus = True

         Label:
            text: "Co-costruzione"

         TextInput:
            id: Cocos1
            hint_text: "Input"
            multiline: False
            on_text_validate: Cocos2.focus = True
         TextInput:
            id: Cocos2
            multiline: False
            hint_text: "Input"
            on_text_validate: Cocos3.focus = True
         TextInput:
            id: Cocos3
            multiline: False
            hint_text: "Input"
            on_text_validate: Cocos4.focus = True
         TextInput:
            id: Cocos4
            multiline: False
            hint_text: "Input"
            on_text_validate: Inq1.focus = True

         Label:
            text: "Inquadramento"

         TextInput:
            id: Inq1
            hint_text: "Input"
            multiline: False
            on_text_validate: Inq2.focus = True
         TextInput:
            id: Inq2
            multiline: False
            hint_text: "Input"
            on_text_validate: Inq3.focus = True
         TextInput:
            id: Inq3
            multiline: False
            hint_text: "Input"
            on_text_validate: Inq4.focus = True
         TextInput:
            id: Inq4
            multiline: False
            hint_text: "Input"
            on_text_validate: Cal1.focus = True

         Label:
            text: "Calore famigliare"

         TextInput:
            id: Cal1
            hint_text: "Input"
            multiline: False
            on_text_validate: Cal2.focus = True
         TextInput:
            id: Cal2
            multiline: False
            hint_text: "Input"
            on_text_validate: Cal3.focus = True
         TextInput:
            id: Cal3
            multiline: False
            hint_text: "Input"
            on_text_validate: Cal4.focus = True
         TextInput:
            id: Cal4
            multiline: False
            hint_text: "Input"
            on_text_validate: Val1.focus = True

         Label:
            text: "Validazione"

         TextInput:
            id: Val1
            hint_text: "Input"
            multiline: False
            on_text_validate: Val2.focus = True
         TextInput:
            id: Val2
            multiline: False
            hint_text: "Input"
            on_text_validate: Val3.focus = True
         TextInput:
            id: Val3
            multiline: False
            hint_text: "Input"
            on_text_validate: Val4.focus = True
         TextInput:
            id: Val4
            multiline: False
            hint_text: "Input"
            on_text_validate: Aute1.focus = True

         Label:
            text: "Autenticita"

         TextInput:
            id: Aute1
            hint_text: "Input"
            multiline: False
            on_text_validate: Aute2.focus = True
         TextInput:
            id: Aute2
            multiline: False
            hint_text: "Input"
            on_text_validate: Aute3.focus = True
         TextInput:
            id: Aute3
            multiline: False
            hint_text: "Input"
            on_text_validate: Aute4.focus = True
         TextInput:
            id: Aute4
            multiline: False
            hint_text: "Input"
            on_text_validate: Eac1.focus = True

         Label:
            text: "Ris. errori att. condivise"

         TextInput:
            id: Eac1
            hint_text: "Input"
            multiline: False
            on_text_validate: Eac2.focus = True
         TextInput:
            id: Eac2
            multiline: False
            hint_text: "Input"
            on_text_validate: Eac3.focus = True
         TextInput:
            id: Eac3
            multiline: False
            hint_text: "Input"
            on_text_validate: Eac4.focus = True
         TextInput:
            id: Eac4
            multiline: False
            hint_text: "Input"
            on_text_validate: Ecc1.focus = True

         Label:
            text: "Ris. errori camb. contesto"

         TextInput:
            id: Ecc1
            hint_text: "Input"
            multiline: False
            on_text_validate: Ecc2.focus = True
         TextInput:
            id: Ecc2
            multiline: False
            hint_text: "Input"
            on_text_validate: Ecc3.focus = True
         TextInput:
            id: Ecc3
            multiline: False
            hint_text: "Input"
            on_text_validate: Ecc4.focus = True
         TextInput:
            id: Ecc4
            multiline: False
            hint_text: "Input"
            on_text_validate: Sos1.focus = True

         Label:
            text: "Sostegno"

         TextInput:
            id: Sos1
            hint_text: "Input"
            multiline: False
            on_text_validate: Sos2.focus = True
         TextInput:
            id: Sos2
            multiline: False
            hint_text: "Input"
            on_text_validate: Sos3.focus = True
         TextInput:
            id: Sos3
            multiline: False
            hint_text: "Input"
            on_text_validate: Sos4.focus = True
         TextInput:
            id: Sos4
            multiline: False
            hint_text: "Input"
            on_text_validate: Conf1.focus = True

         Label:
            text: "Conflitto"

         TextInput:
            id: Conf1
            hint_text: "Input"
            multiline: False
            on_text_validate: Conf2.focus = True
         TextInput:
            id: Conf2
            multiline: False
            hint_text: "Input"
            on_text_validate: Conf3.focus = True
         TextInput:
            id: Conf3
            multiline: False
            hint_text: "Input"
            on_text_validate: Conf4.focus = True
         TextInput:
            id: Conf4
            multiline: False
            hint_text: "Input"
            on_text_validate: Coin1.focus = True

         Label:
            text: "Coinvolgimento"

         TextInput:
            id: Coin1
            hint_text: "Input"
            multiline: False
            on_text_validate: Coin2.focus = True
         TextInput:
            id: Coin2
            multiline: False
            hint_text: "Input"
            on_text_validate: Coin3.focus = True
         TextInput:
            id: Coin3
            multiline: False
            hint_text: "Input"
            on_text_validate: Coin4.focus = True
         TextInput:
            id: Coin4
            multiline: False
            hint_text: "Input"
            on_text_validate: Auto1.focus = True

         Label:
            text: "Autor./limiti/autonomia"

         TextInput:
            id: Auto1
            hint_text: "Input"
            multiline: False
            on_text_validate: Auto2.focus = True
         TextInput:
            id: Auto2
            multiline: False
            hint_text: "Input"
            on_text_validate: Auto3.focus = True
         TextInput:
            id: Auto3
            multiline: False
            hint_text: "Input"
            on_text_validate: Auto4.focus = True
         TextInput:
            id: Auto4
            multiline: False
            hint_text: "Input"
           ## Focus sul pulsante di avvio on_text_validate: PS2.focus = True

      BoxLayout:
         padding: 10,10
         orientation: "horizontal"
         size_hint_y: 0.1
         Label:
            text: ""
            size_hint_x: 0.69
         Button:

            on_release: app.root.current = "Output"
            text: "Conferma"
            size_hint_x: 0.2
         Label:
            text: ''
            size_hint_x:0.01
         Button:
            text: "Annulla"
            size_hint_x: 0.1
            ##on_release: on_release: root.clear_inputs()
<Output>:
   name: "Output"
   BoxLayout:

      Label:
         text: "Output"

1 Ответ

0 голосов
/ 24 марта 2020

Вы можете получить доступ к данным, используя словарь ids следующим образом:

class LtpLayout(Screen):
    def SaveData(self):
        for k,v in self.ids.items():
            print(k,v.text)

Это напечатает (вы можете сделать что-то еще, например, добавить List) все в LtpLayout, что было учитывая id в вашем kv файле. Обратите внимание, что это будет включать ВСЕ Widgets, которые имеют id. Если это не то, что вы хотите, вы можете проверить, является ли Widget (v в коде) TextInput.

...