Python kivy-从kv到py的文本输入-导入数据
我试图从kv文件中的一个简单文本输入中获取数据,并使用python文件中的信息。 但我总是犯同样的错误。 当我按下一个按钮,函数try to run看起来像是试图从text_location小部件获取信息时,就会发生此错误 先谢谢你Python kivy-从kv到py的文本输入-导入数据,python,python-3.x,kivy,kivy-language,Python,Python 3.x,Kivy,Kivy Language,我试图从kv文件中的一个简单文本输入中获取数据,并使用python文件中的信息。 但我总是犯同样的错误。 当我按下一个按钮,函数try to run看起来像是试图从text_location小部件获取信息时,就会发生此错误 先谢谢你 class ScatterTextWidget(BoxLayout): def initialize_request(self): ''' Initial analysis and control flow of the class '
class ScatterTextWidget(BoxLayout):
def initialize_request(self):
''' Initial analysis and control flow of the class '''
location = self.ids.input_location
date = S.ids.input_date
time_raw = ScatterTextWidget.ids.input_time
print(f'{location} - {date} - {time_raw}')
class HistoricalApp(App):
def build(self):
return ScatterTextWidget()
if __name__ == "__main__":
HistoricalApp().run()
名为“historical.kv”的kivy文件
我减少它是因为它有点长
<ScatterTextWidget>:
BoxLayout:
canvas.before:
Color:
rgb: utils.get_color_from_hex('#01183f')
Rectangle:
pos: self.pos
size: self.size
size_hint_y: None
height: 40
valign: 'middle'
TextInput:
id:text_location
width: 200
id: input2
font_size: 15
size_hint_y: None
height:40
TextInput:
id:input_date
width: 200
id: input1
font_size: 15
size_hint_y: None
height: 40
TextInput:
id:input_time
width: 200
id: input1
font_size: 15
size_hint_y: None
height: 40
:
盒子布局:
在以下情况之前:
颜色:
rgb:utils.get_color_from_hex('#01183f'))
矩形:
pos:self.pos
大小:self.size
尺寸提示:无
身高:40
valign:“中间”
文本输入:
id:text\u位置
宽度:200
id:input2
字体大小:15
尺寸提示:无
身高:40
文本输入:
id:输入日期
宽度:200
id:input1
字体大小:15
尺寸提示:无
身高:40
文本输入:
id:输入时间
宽度:200
id:input1
字体大小:15
尺寸提示:无
身高:40
我收到的错误是
File "kivy\properties.pyx", line 838, in
kivy.properties.ObservableDict.__getattr__
KeyError: 'text_location'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:/Users/IBKCo/Desktop/Git Programs/TimeStationHistoricalRecords/MainGui.py", line 77, in <module>
HistoricalApp().run()
File "C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site-packages\kivy\app.py", line 826, in run
runTouchApp()
File "C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site-packages\kivy\base.py", line 502, in runTouchApp
EventLoop.window.mainloop()
File "C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site-packages\kivy\core\window\window_sdl2.py", line 727, in mainloop
self._mainloop()
File "C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site-packages\kivy\core\window\window_sdl2.py", line 460, in _mainloop
EventLoop.idle()
File "C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site-packages\kivy\base.py", line 340, in idle
self.dispatch_input()
File "C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site-packages\kivy\base.py", line 325, in dispatch_input
post_dispatch_input(*pop(0))
File "C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site-packages\kivy\base.py", line 291, in post_dispatch_input
wid.dispatch('on_touch_up', me)
File "kivy\_event.pyx", line 707, in kivy._event.EventDispatcher.dispatch
File "C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site-packages\kivy\uix\behaviors\button.py", line 179, in on_touch_up
self.dispatch('on_release')
File "kivy\_event.pyx", line 703, in kivy._event.EventDispatcher.dispatch
File "kivy\_event.pyx", line 1214, in kivy._event.EventObservers.dispatch
File "kivy\_event.pyx", line 1098, in kivy._event.EventObservers._dispatch
File "C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site-packages\kivy\lang\builder.py", line 64, in custom_callback
exec(__kvlang__.co_value, idmap)
File "C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\historical.kv", line 127, in <module>
on_release: root.initialize_request()
File "C:/Users/IBKCo/Desktop/Git Programs/TimeStationHistoricalRecords/MainGui.py", line 31, in initialize_request
location = self.ids.text_location
File "kivy\properties.pyx", line 841, in kivy.properties.ObservableDict.__getattr__
AttributeError: 'super' object has no attribute '__getattr__'
文件“kivy\properties.pyx”,第838行,在
kivy.properties.ObservableDecit.\uu getattr__
KeyError:“文本位置”
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“C:/Users/IBKCo/Desktop/Git Programs/TimeStationHistoricalRecords/MainGui.py”,第77行,在
HistoricalApp().run()
文件“C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site packages\kivy\app.py”,第826行,正在运行
runTouchApp()
runTouchApp中的文件“C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site packages\kivy\base.py”,第502行
EventLoop.window.mainloop()
文件“C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site packages\kivy\core\window\window\u sdl2.py”,第727行,在mainloop中
self._mainloop()
文件“C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site packages\kivy\core\window\window\u sdl2.py”,第460行,在\u mainloop中
EventLoop.idle()
文件“C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site packages\kivy\base.py”,第340行,处于空闲状态
self.dispatch_input()
文件“C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site packages\kivy\base.py”,第325行,在dispatch\u输入中
发送后输入(*pop(0))
文件“C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site packages\kivy\base.py”,第291行,在后期调度输入中
wid.dispatch('我在润色时)
文件“kivy\\ u event.pyx”,第707行,在kivy.\u event.EventDispatcher.dispatch中
文件“C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site packages\kivy\uix\behaviors\button.py”,第179行,在on\u touch\u中
自我分派(“发布时”)
文件“kivy\\ u event.pyx”,第703行,在kivy.\u event.EventDispatcher.dispatch中
文件“kivy\\u event.pyx”,第1214行,在kivy.\u event.eventobserver.dispatch中
文件“kivy\\u event.pyx”,第1098行,在kivy.\u event.eventobserver.\u调度
文件“C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\pdEnv\lib\site packages\kivy\lang\builder.py”,第64行,在自定义回调中
exec(\uuuukVLANG\uuuuuuu.co\u值,idmap)
文件“C:\Users\IBKCo\Desktop\Git Programs\TimeStationHistoricalRecords\historical.kv”,第127行,在
发布时:root.initialize\u请求()
文件“C:/Users/IBKCo/Desktop/Git Programs/TimeStationHistoricalRecords/MainGui.py”,第31行,在初始化_请求中
位置=self.ids.text\u位置
文件“kivy\properties.pyx”,第841行,位于kivy.properties.observedict.\uu getattr__
AttributeError:“super”对象没有属性“\uuu getattr\uuuu”
先谢谢你
最好,首先,您需要删除
id:input1
行和id:input2
行。然后将initialize_请求方法更改为:
def initialize_request(self):
''' Initial analysis and control flow of the class '''
location = self.ids.text_location.text
date = self.ids.input_date.text
time_raw = self.ids.input_time.text
print(f'{location} - {date} - {time_raw}')
请注意,self.ids.text\u location
是对TextInput
小部件的引用,因此您必须添加.text
以获取其文本。其他TextInput
小部件也一样。为每个TextInput
定义了几个ID
。只有最后一条有效。而且你有重复的ID
,这是不允许的。哇,我真不敢相信我没看到。这就是为什么有时候你需要一双眼睛来帮助你。非常感谢你的帮助。这完全是新手犯的错误。谢谢你指出,贝斯特,