我已经编写了一些代码片段,用于再现项目中的错误。基本上是关于以下代码的:
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 ”
我尝试了各种事情,希望有人能帮助我。