【发布时间】:2021-02-08 13:35:22
【问题描述】:
我是 Kivy 的新手,我正在尝试使用 FileChooserIconView 获取文件的路径并将其复制到 TextInput。但是当我双击一个文件时,我得到了这个错误消息“'NoneType'对象没有属性'text'”。我无法解决它。我真的很需要帮助。
我的代码是:
from kivy.config import Config
Config.set('graphics', 'resizable', False)
Config.set('graphics', 'width', '500')
Config.set('graphics', 'height', '700')
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.core.window import Window
from kivy.uix.popup import Popup
from kivy.properties import ObjectProperty
Window.clearcolor = (1, 1, 1, 1)
class Window(Widget):
label = ObjectProperty(None)
def popup_open(self):
self.popup = FolderPopup()
self.popup.open()
class FolderPopup(Popup):
window = Window()
class GUI(App):
def build(self):
return Window()
if __name__ == "__main__":
GUI().run()
我的 .kv 文件是:
<FolderPopup>:
size_hint: (None, None)
size: (500, 500)
title: "Choose a File"
BoxLayout:
FileChooserIconView:
on_selection: root.window.label.text = self.selection
<Window>:
label: label
GridLayout:
size: 500, 700
cols: 1
TextInput:
text: "Please choose a file."
multiline: False
halign: "center"
readonly: True
color: 0, 0, 0, 1
id: label
size_hint: root.width, None
size: 0, 35
Button:
text: "Choose a File"
size: root.width, 10
on_release: root.popup_open()
size_hint: root.width, None
size: 0, 30
抱歉,我忘记发布回溯。这是回溯:
Traceback (most recent call last):
File "D:\PyCharm\Converter\Main.py", line 31, in <module>
GUI().run()
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\app.py", line 950, in run
runTouchApp()
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\base.py", line 582, in runTouchApp
EventLoop.mainloop()
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\base.py", line 347, in mainloop
self.idle()
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\base.py", line 391, in idle
self.dispatch_input()
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\base.py", line 342, in dispatch_input
post_dispatch_input(*pop(0))
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\base.py", line 248, in post_dispatch_input
listener.dispatch('on_motion', etype, me)
File "kivy\_event.pyx", line 709, in kivy._event.EventDispatcher.dispatch
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\core\window\__init__.py", line 1416, in on_motion
self.dispatch('on_touch_up', me)
File "kivy\_event.pyx", line 709, in kivy._event.EventDispatcher.dispatch
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\core\window\__init__.py", line 1452, in on_touch_up
if w.dispatch('on_touch_up', touch):
File "kivy\_event.pyx", line 709, in kivy._event.EventDispatcher.dispatch
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\modalview.py", line 284, in on_touch_up
super(ModalView, self).on_touch_up(touch)
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\widget.py", line 567, in on_touch_up
if child.dispatch('on_touch_up', touch):
File "kivy\_event.pyx", line 709, in kivy._event.EventDispatcher.dispatch
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\widget.py", line 567, in on_touch_up
if child.dispatch('on_touch_up', touch):
File "kivy\_event.pyx", line 709, in kivy._event.EventDispatcher.dispatch
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\widget.py", line 567, in on_touch_up
if child.dispatch('on_touch_up', touch):
File "kivy\_event.pyx", line 709, in kivy._event.EventDispatcher.dispatch
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\widget.py", line 567, in on_touch_up
if child.dispatch('on_touch_up', touch):
File "kivy\_event.pyx", line 709, in kivy._event.EventDispatcher.dispatch
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\filechooser.py", line 563, in on_touch_up
return super(FileChooserController, self).on_touch_up(touch)
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\relativelayout.py", line 313, in on_touch_up
ret = super(RelativeLayout, self).on_touch_up(touch)
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\widget.py", line 567, in on_touch_up
if child.dispatch('on_touch_up', touch):
File "kivy\_event.pyx", line 709, in kivy._event.EventDispatcher.dispatch
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\widget.py", line 567, in on_touch_up
if child.dispatch('on_touch_up', touch):
File "kivy\_event.pyx", line 709, in kivy._event.EventDispatcher.dispatch
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\scrollview.py", line 950, in on_touch_up
if self.dispatch('on_scroll_stop', touch):
File "kivy\_event.pyx", line 709, in kivy._event.EventDispatcher.dispatch
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\scrollview.py", line 989, in on_scroll_stop
self.simulate_touch_down(touch)
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\scrollview.py", line 668, in simulate_touch_down
ret = super(ScrollView, self).on_touch_down(touch)
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\widget.py", line 545, in on_touch_down
if child.dispatch('on_touch_down', touch):
File "kivy\_event.pyx", line 709, in kivy._event.EventDispatcher.dispatch
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\scatter.py", line 526, in on_touch_down
if super(Scatter, self).on_touch_down(touch):
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\widget.py", line 545, in on_touch_down
if child.dispatch('on_touch_down', touch):
File "kivy\_event.pyx", line 709, in kivy._event.EventDispatcher.dispatch
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\widget.py", line 545, in on_touch_down
if child.dispatch('on_touch_down', touch):
File "kivy\_event.pyx", line 705, in kivy._event.EventDispatcher.dispatch
File "kivy\_event.pyx", line 1248, in kivy._event.EventObservers.dispatch
File "kivy\_event.pyx", line 1132, in kivy._event.EventObservers._dispatch
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\lang\builder.py", line 57, in custom_callback
exec(__kvlang__.co_value, idmap)
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\data\style.kv", line 398, in <module>
on_touch_down: self.collide_point(*args[1].pos) and ctx.controller().entry_touched(self, args[1])
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\uix\filechooser.py", line 627, in entry_touched
self.selection = [abspath(join(self.path, entry.path)), ]
File "kivy\properties.pyx", line 498, in kivy.properties.Property.__set__
File "kivy\properties.pyx", line 840, in kivy.properties.ListProperty.set
File "kivy\properties.pyx", line 545, in kivy.properties.Property.set
File "kivy\properties.pyx", line 600, in kivy.properties.Property.dispatch
File "kivy\_event.pyx", line 1248, in kivy._event.EventObservers.dispatch
File "kivy\_event.pyx", line 1130, in kivy._event.EventObservers._dispatch
File "D:\PyCharm\Converter\venv\lib\site-packages\kivy\lang\builder.py", line 57, in custom_callback
exec(__kvlang__.co_value, idmap)
File "D:\PyCharm\Converter\gui.kv", line 7, in <module>
on_selection: root.window.label.text = self.selection
AttributeError: 'NoneType' object has no attribute 'text'
【问题讨论】:
-
发布完整的回溯。还有哪个对象是空的?
标签: python python-3.x kivy kivy-language