0

我最近开始学习 Kivy-Python。我将编写一个迷你键盘项目,但遇到一些需要一些建议的问题。该程序在 Pycharm 中运行良好,但是当我尝试将其转换为 apk 并在 android 手机上运行时。它在加载时崩溃并给出错误,因为 AttributeError: object has no attribute 'miss_button' 将不胜感激任何建议。提前致谢。

这是我的 main.py (注意:我只提取了我认为与问题相关的区域)

<main.py> 导入操作系统……</p>

from kivy.app import App
from kivy.clock import Clock
from kivy.properties import StringProperty, ObjectProperty
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout

class CalPad(App):
    …
    miss_button = ObjectProperty(None)
    …

    def build(self):
        return FloatLayout()

    …

    def on_start(self, dt=0):
        global misscall

        # Miss button initialization from settings
        if misscall == '1':
            self.root.miss_button.disabled = False
        else:
            self.root.miss_button.disabled = True
            self.root.miss_button.opacity = 0    

    def __init__(self, *args, **kwargs):
        Clock.schedule_once(self.on_start, 0)
        super(CallPad, self).__init__(*args, **kwargs)  

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

这是kivy文件:

<CalPad.kv>

#:kivy 2.0

<Button>:
    font: "Century Gothic"
    font_size: 40
    width: self.height
    size_hint: (0.15 , 0.15)

<FloatLayout>:
    miss_button : miss_btn.__self__

    …

    Button:
        id: miss_btn
        text: "MISS"
        font_size: 25
        opacity: 0 if miss_btn.disabled is True else 1
    on_press: app.send_btn(“M”)

    ...

以下是我尝试过但结果相同的领域:

  1. 我在 super() 之后放置了 Clock.schedule_once(self.on_start, 0)。init (...) 但它仍然给出相同的错误。
  2. 我已将 Clock.schedule_once(self.on_start, 0) 移至 def build(self) 函数,但它仍然给出相同的错误。

我在这个错误上已经有一个多星期了,然后才决定在这里发帖寻求一些建议(如果有的话)。谢谢指教

4

0 回答 0