发布
社区首页 >问答首页 >奇维温度转换器

奇维温度转换器
EN

Stack Overflow用户
提问于 2018-02-22 17:54:18
回答 1查看 216关注 0票数 0

我正试图和Kivy一起创建一个华氏到摄氏的程序。我一直得到一个没有定义计算的错误。我不知道为什么会发生这种情况,因为它是在下面定义的。任何帮助都将不胜感激。谢谢你的帮助。

代码语言:javascript
代码运行次数:0
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-22 19:32:27

您的代码有以下错误:

  • 当您使用compute.celsius()时,您假设您在转换类中有一个celsius()方法,但是您没有它。
  • 必须使用Temp()方法而不向其传递任何参数。
  • 当使用self.result时,您假设结果是转换类的成员,但它不是。如果要访问.kv的层次结构树中的元素,则必须通过id进行访问。
代码语言:javascript
代码运行次数:0
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48934167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档