Kivy Python如何从TextInput字段获取数据

时间:2018-11-28 13:01:47

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

我已经编写了一些代码片段,用于再现项目中的错误。基本上是关于以下代码的:

from kivy.config import Config
Config.set('graphics', 'resizable', '0')
Config.set('graphics', 'width', '150')
Config.set('graphics', 'height', '150')
Config.set('graphics','multisamples','0')
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.lang import Builder

import kivy

kivy_file = Builder.load_string("""
<Motor>:
    TextInput:
        id: x_speed
        input_filter: 'float'
        font_size: '14sp'
        multiline: False
        size: 75, 25
        pos: 40, 80
    Label:
        text: "Speed X-Axis (in mm/s)"
        font_size: '14sp'
        pos: 816, 95
    Button:
        text: "Apply"
        size: 50, 25
        pos: 50, 50
        on_press: root.SpeedX()
""")

class Motor(Widget):
    def SpeedX(Widget):
        test = self.ids.x_speed.text
        print(test)

class ActionApp(App):

    def build(self):
        return Motor()

if __name__ == "__main__":
    ActionApp().run()

我有一个.py文件,其中包含Kivy代码,我想要的是在我单击相应按钮后从TextInput中输入的内容获取数据。我已经用Google搜索并进入了以下代码行:self.ids.x_speed.text,然后它说我按下按钮后未定义self。当我尝试通过在代码和函数的Kivy部分中将其作为参数来定义self时,如下所示:

在我的Kivy顶部:

on_press: root.SpeedX(self)

在我的函数中:

def SpeedX(Widget, self):

按下按钮后,它将出现以下错误:

  

在处理上述异常期间,发生了另一个异常:
  追溯(最近一次通话):
  
中的文件“ H:\ Snippet.py”,第44行   ActionApp()。run()
  文件   “ C:\ Users \ DSSpc41 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ kivy \ app.py”,   行826,在运行runTouchApp()
  文件   “ C:\ Users \ DSSpc41 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ kivy \ base.py”,   runTouchApp中的第502行
  EventLoop.window.mainloop()
  文件   “ C:\ Users \ DSSpc41 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ kivy \ core \ window \ window_sdl2.py”,   主循环中的727行
  self._mainloop()
  文件   “ C:\ Users \ DSSpc41 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ kivy \ core \ window \ window_sdl2.py”,   _mainloop中的第460行
  EventLoop.idle()
  文件   “ C:\ Users \ DSSpc41 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ kivy \ base.py”,   第340行,处于空闲状态self.dispatch_input()
  文件   “ C:\ Users \ DSSpc41 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ kivy \ base.py”,   第325行,在dispatch_input
中   post_dispatch_input(* pop(0))
  文件   “ C:\ Users \ DSSpc41 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ kivy \ base.py”,   第231行,位于post_dispatch_input
  listener.dispatch('on_motion',etype,me)
  文件“ kivy_event.pyx”,第707行,位于   kivy._event.EventDispatcher.dispatch
  文件   “ C:\ Users \ DSSpc41 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ kivy \ core \ window__init __。py”,   1360行,位于on_motion
  self.dispatch('on_touch_down',我)
  文件“ kivy_event.pyx”,第707行,位于   kivy._event.EventDispatcher.dispatch
  文件   “ C:\ Users \ DSSpc41 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ kivy \ core \ window__init __。py”,   1376行,位于on_touch_down
  如果w.dispatch('on_touch_down',touch):
  文件“ kivy_event.pyx”,第707行,位于   kivy._event.EventDispatcher.dispatch
  文件   “ C:\ Users \ DSSpc41 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ kivy \ uix \ widget.py”,   第460行,位于on_touch_down
  如果child.dispatch('on_touch_down',touch):
  文件“ kivy_event.pyx”,第707行,位于   kivy._event.EventDispatcher.dispatch
  文件   “ C:\ Users \ DSSpc41 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ kivy \ uix \ behaviors \ button.py”,   第151行,位于on_touch_down
  self.dispatch('on_press')
  在文件“ kivy_event.pyx”的第703行中   kivy._event.EventDispatcher.dispatch
  在文件“ kivy_event.pyx”的第1214行中   kivy._event.EventObservers.dispatch
  在第1098行的文件“ kivy_event.pyx”中   kivy._event.EventObservers._dispatch
  文件   “ C:\ Users \ DSSpc41 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ kivy \ lang \ builder.py”,   第64行,位于custom_callback
  exec( kvlang .co_value,idmap)
  在
的文件“”的第18行   在SpeedX中的文件“ H:\ Snippet.py”,第35行,
  测试= self.ids.x_speed.text
  在文件“ kivy \ properties.pyx”的第841行中   kivy.properties.ObservableDict。 getattr
  AttributeError:“超级”对象没有属性“ getattr

我尝试了各种事情,希望有人能帮助我。

0 个答案:

没有答案