我最近开始学习 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”)
...
以下是我尝试过但结果相同的领域:
- 我在 super() 之后放置了 Clock.schedule_once(self.on_start, 0)。init (...) 但它仍然给出相同的错误。
- 我已将 Clock.schedule_once(self.on_start, 0) 移至 def build(self) 函数,但它仍然给出相同的错误。
我在这个错误上已经有一个多星期了,然后才决定在这里发帖寻求一些建议(如果有的话)。谢谢指教