我正试图和Kivy一起创建一个华氏到摄氏的程序。我一直得到一个没有定义计算的错误。我不知道为什么会发生这种情况,因为它是在下面定义的。任何帮助都将不胜感激。谢谢你的帮助。
from kivy.app import App
from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.gridlayout import GridLayout
runTouchApp(Builder.load_string('''
<Convert>:
id: compute
cols:2
padding: 10
spacing: 10
GridLayout:
cols:2
rows:3
Label:
text: 'Fahrenheit'
TextInput:
id: entry
multiline: False
Label:
text: 'Celsius'
TextInput:
id: result
multiline: False
Button:
text: 'Convert'
on_press: compute.celsius(result.text)
'''))
class Convert(GridLayout):
def Temp(self,celsius):
celsius = (entry-32) * 0.556
if celsius:
try:
self.result.text = str(eval(celsius))
except Exception:
self.result.txt = 'Error'
class ConverApp(App):
def build(self):
return Convert()
if __name__=='__main__':
ConverApp().run()
发布于 2018-02-22 19:32:27
您的代码有以下错误:
compute.celsius()
时,您假设您在转换类中有一个celsius()
方法,但是您没有它。Temp()
方法而不向其传递任何参数。from kivy.app import App
from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.gridlayout import GridLayout
runTouchApp(Builder.load_string('''
<Convert>:
id: compute
cols:2
padding: 10
spacing: 10
GridLayout:
cols:2
rows:3
Label:
text: 'Fahrenheit'
TextInput:
id: entry
multiline: False
Label:
text: 'Celsius'
TextInput:
id: result
multiline: False
Button:
text: 'Convert'
on_press: root.temp()
'''))
class Convert(GridLayout):
def temp(self):
try:
fahrenheit = self.ids.entry.text
celsius = (int(fahrenheit)-32) * 0.556
self.ids.result.text = str(celsius)
except ValueError:
self.ids.result.text = 'Error'
class ConverApp(App):
def build(self):
return Convert()
if __name__=='__main__':
ConverApp().run()
https://stackoverflow.com/questions/48934167
复制相似问题