2016-03-05 96 views
-3

好吧,我試圖設置一個變量爲None,以便我可以清除它,但是每次執行該操作時,都會收到錯誤AttributeError: 'NoneType' object has no attribute 'replace'。另外我在使用Kivy的情況下有所作爲。代碼如下:爲什麼我無法將變量設置爲無

if self.ids.txt_inpt1.text != '': 
    angA = int(self.ids.txt_inpt1.text) 
    print angA 
else: 
    angA = None 

任何幫助表示讚賞。

回溯

Traceback (most recent call last): 
File "solve_triangle.py", line 183, in <module> 
mainApp().run() 
File "/Library/Python/2.7/site-packages/kivy/app.py", line 828, in run 
runTouchApp() 
File "/Library/Python/2.7/site-packages/kivy/base.py", line 487, in runTouchApp 
EventLoop.window.mainloop() 
File "/Library/Python/2.7/site-packages/kivy/core/window/window_pygame.py", line 403, in mainloop 
self._mainloop() 
File "/Library/Python/2.7/site-packages/kivy/core/window/window_pygame.py", line 290, in _mainloop 
EventLoop.idle() 
File "/Library/Python/2.7/site-packages/kivy/base.py", line 330, in idle 
self.dispatch_input() 
File "/Library/Python/2.7/site-packages/kivy/base.py", line 315, in dispatch_input 
post_dispatch_input(*pop(0)) 
File "/Library/Python/2.7/site-packages/kivy/base.py", line 221, in post_dispatch_input 
listener.dispatch('on_motion', etype, me) 
File "kivy/_event.pyx", line 718, in kivy._event.EventDispatcher.dispatch (/private/tmp/pip-build-jshW4M/kivy/kivy/_event.c:7699) 
File "/Library/Python/2.7/site-packages/kivy/core/window/__init__.py", line 1030, in on_motion 
self.dispatch('on_touch_down', me) 
File "kivy/_event.pyx", line 718, in kivy._event.EventDispatcher.dispatch (/private/tmp/pip-build-jshW4M/kivy/kivy/_event.c:7699) 
File "/Library/Python/2.7/site-packages/kivy/core/window/__init__.py", line 1046, in on_touch_down 
if w.dispatch('on_touch_down', touch): 
File "kivy/_event.pyx", line 718, in kivy._event.EventDispatcher.dispatch (/private/tmp/pip-build-jshW4M/kivy/kivy/_event.c:7699) 
File "/Library/Python/2.7/site-packages/kivy/uix/widget.py", line 432, in on_touch_down 
if child.dispatch('on_touch_down', touch): 
File "kivy/_event.pyx", line 718, in kivy._event.EventDispatcher.dispatch (/private/tmp/pip-build-jshW4M/kivy/kivy/_event.c:7699) 
File "/Library/Python/2.7/site-packages/kivy/uix/widget.py", line 432, in on_touch_down 
if child.dispatch('on_touch_down', touch): 
File "kivy/_event.pyx", line 718, in kivy._event.EventDispatcher.dispatch (/private/tmp/pip-build-jshW4M/kivy/kivy/_event.c:7699) 
File "/Library/Python/2.7/site-packages/kivy/uix/behaviors/button.py", line 110, in on_touch_down 
self.dispatch('on_press') 
File "kivy/_event.pyx", line 714, in kivy._event.EventDispatcher.dispatch (/private/tmp/pip-build-jshW4M/kivy/kivy/_event.c:7654) 
File "kivy/_event.pyx", line 1224, in kivy._event.EventObservers.dispatch (/private/tmp/pip-build-jshW4M/kivy/kivy/_event.c:13497) 
File "kivy/_event.pyx", line 1108, in kivy._event.EventObservers._dispatch (/private/tmp/pip-build-jshW4M/kivy/kivy/_event.c:12329) 
File "/Library/Python/2.7/site-packages/kivy/lang.py", line 1557, in custom_callback 
exec(__kvlang__.co_value, idmap) 
File "calculator.kv", line 61, in <module> 
on_press: root.solve_triangle() 
File "solve_triangle.py", line 169, in solve_triangle 
self.ids.txt_inpt1.text = angA 
File "kivy/weakproxy.pyx", line 22, in kivy.weakproxy.WeakProxy.__setattr__ (/private/tmp/pip-build-jshW4M/kivy/kivy/weakproxy.c:1235) 
File "kivy/properties.pyx", line 408, in kivy.properties.Property.__set__ (/private/tmp/pip-build-jshW4M/kivy/kivy/properties.c:5114) 
File "kivy/properties.pyx", line 1390, in kivy.properties.AliasProperty.set (/private/tmp/pip-build-jshW4M/kivy/kivy/properties.c:23025) 
File "/Library/Python/2.7/site-packages/kivy/uix/textinput.py", line 2849, in _set_text 
text = text.replace(u'\r\n', u'\n') 
AttributeError: 'NoneType' object has no attribute 'replace' 
+3

請給出[MCVE]爲了善意,你發佈的代碼甚至不會引用'.replace'。 – jonrsharpe

+0

請將追溯到你的問題。該代碼不直接導致問題;我們需要更多的信息。 – zondo

+0

可能在你的代碼中有'angA.replace',並且有'angA == None'的情況。 –

回答

0

這裏出現的錯誤:當您設置angANone,然後分配給self.ids.txt_inpt1.text

File "solve_triangle.py", line 169, in solve_triangle 
self.ids.txt_inpt1.text = angA 

,該kivy代碼吹起來,因爲它假定text屬性將總是是一個字符串,而不是None

如果你必須分配給angAtext,並angA可以採取無值,試試這個:

self.ids.txt_input1.text = angA if angA is not None else '' 
+0

或重構您的代碼,以便不能按按鈕來「解決根三角形」如果不是所有的值都是有效的。 –

相關問題