【问题标题】:force close when i'm click the button -kivy当我单击按钮时强制关闭-kivy
【发布时间】:2021-12-14 08:46:36
【问题描述】:

我输入了一些关于购买系统的 kivy 代码,直到我按下我制作的按钮,应用程序突然强制关闭,我不知道为什么,你能帮帮我吗?

我的python代码

import kivy
from kivy.app import App
from kivy.core import text
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty


class MyGrid(Widget):
tv = ObjectProperty(None) 
pc = ObjectProperty(None)
coin = ObjectProperty(None)

def tv(self):
    coin = 4000
    tv = 3000
    if coin > tv:
     coin - tv
     print("you got the tv", "coin= ", coin)
    if coin < tv:
     print("your coin is minus")

def pc(self):
    coin = 4000
    pc = 5000
    if coin > pc:
        coin - pc
        print("you got the pc", "coin= ", coin)
    if coin < pc:
     print ("your coin is minus")
    
    


class MyApp(App):
def build(self):
    return MyGrid()


if __name__ == "__main__":
MyApp().run()

我的 kivy 代码

<MyGrid>:

tv : tv
pc : pc

GridLayout:
    cols:1
    size: root.width - 200, root.height -200
    pos: 100, 100

    GridLayout:
        cols:2

        Label:
            text: "tv "

        Button:
            id: tv
            text: "3000"
            on_press: root.tv()
    
    GridLayout:
        cols:2

        Label:
            text: "pc"

        Button:
            id: pc
            text: "5000"
            on_press: root.pc()
              

【问题讨论】:

  • 您是否收到错误消息?
  • 是的,我收到错误消息
  • 将错误信息添加到您的问题中。

标签: python kivy


【解决方案1】:

一些建议是:

  1. 使缩进适当,
  2. 最重要的两件事:

i) 通过self 建立对象引用, ii) attributesmethods 可能由于名称相同(您同时调用和使用它们)而发生冲突,请尝试更改它们。

事实证明,attributes'methods' 的同名主要是导致问题的原因。更改它们后,它应该可以按预期工作。


import kivy
from kivy.app import App
from kivy.lang import Builder
from kivy.core import text
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty



Builder.load_string("""

<MyGrid>:
    tv : tv
    pc : pc

    GridLayout:
        cols:1
        size: root.width - 200, root.height -200
        pos: 100, 100

        GridLayout:
            cols:2

            Label:
                text: "tv "

            Button:
                id: tv
                text: "3000"
                on_press: root.get_tv()
    
        GridLayout:
            cols:2

            Label:
                text: "pc"

            Button:
                id: pc
                text: "5000"
                on_press: root.get_pc()

""")





class MyGrid(Widget):
    tv = ObjectProperty(None)
    pc = ObjectProperty(None)
    coin = ObjectProperty(None)

    def get_tv(self):
        coin = 4000
        tv = 3000
        if coin > tv:
            coin - tv
            print("you got the tv,", "coin= ", coin)
        if coin < tv:
            print("your coin is minus.")

    def get_pc(self):
        coin = 4000
        pc = 5000
        if coin > pc:
            coin - pc
            print("you got the pc,", "coin= ", coin)
        if coin < pc:
            print ("your coin is minus.")
    
    


class MyApp(App):

    def build(self):
        return MyGrid()


if __name__ == "__main__":
    MyApp().run()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    相关资源
    最近更新 更多