【问题标题】:How to collect data from a kivy screen, save them and plot a barplot into an output printable screen如何从 kivy 屏幕收集数据,保存它们并将条形图绘制到输出可打印屏幕中
【发布时间】:2020-03-24 16:34:23
【问题描述】:

我正在使用 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"

【问题讨论】:

    标签: python python-3.x matplotlib kivy kivy-language


    【解决方案1】:

    您可以像这样使用ids 字典访问数据:

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

    这将打印(您可以执行其他操作,例如附加到 ListLtpLayout 中的所有内容,这些内容在您的 kv 文件中提供了 id。请注意,这将包括所有具有idWidgets。如果这不是您想要的,您可以检查Widget(代码中的v)是否为TextInput

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      相关资源
      最近更新 更多