python - Kivy 标签未更新
问题描述
所以我是 kivy 的新手,我构建了这个,但我不明白为什么它不会更新。打印时,列表正在更新,而不是标签本身。
主文件
class MasukTol(Screen):
ubahintsaldo = [str(int) for int in nyimpen.saldoawal]
textsaldo = ''.join(ubahintsaldo)
n = 0
def masukkansaldo(self):
self.instruksimasuk = "Silakan masukan \n saldo Anda!"
def updatesaldo(self):
self.ubahintsaldo = [str(int) for int in nyimpen.saldoawal]
self.ids.textsaldo = ''.join(str(nyimpen.saldoawal))
return self.ids.textsaldo, self.ubahintsaldo
def pencetsatu(self):
if self.n < 6:
nyimpen.saldoawal[self.n]=1
self.n +=1
self.updatesaldo()
print(nyimpen.saldoawal)
print(self.n)
return nyimpen.saldoawal, self.n
.kv 文件
<MasukTol>:
Label:
id: Saldo
text: root.textsaldo
# Nomor 1
Button:
background_normal: "photos/atm_1.png"
background_down: "photos/atm_down_1.png"
allow_stretch: True
keep_ratio: False
size_hint: 0.11, 0.141
pos_hint:{"x":root.kiri_atm, "y":root.atas_atm}
on_release:
root.pencetsatu()
我制作了一个单独的 python 文件来跟踪每一件事。
nyimpen.py
saldoawal = [0,0,0,0,0,0]
解决方案
阿尔弗雷达
我稍微改变了你的代码:
阿尔弗雷德.py
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
from kivy.properties import ListProperty, StringProperty, NumericProperty
class nyimpen:
saldoawal = [0, 0, 0, 0, 0, 0]
class MasukTol(Screen):
counter = NumericProperty(0)
instruksimasuk = StringProperty()
ubahintsaldo = StringProperty()
saldo_value = StringProperty()
def __init__(self):
super(MasukTol, self).__init__()
self.ubahintsaldo = str([str(int) for int in nyimpen.saldoawal])
self.saldo_value = ''.join(self.ubahintsaldo)
def masukkansaldo(self):
self.instruksimasuk = "Silakan masukan \n saldo Anda!"
def updatesaldo(self):
self.ubahintsaldo = str([str(int) for int in nyimpen.saldoawal])
self.saldo_value = ''.join(str(nyimpen.saldoawal))
return self.saldo_value, self.ubahintsaldo
def pencetsatu(self):
if self.counter < 6:
nyimpen.saldoawal[self.counter] = 1
self.counter += 1
self.updatesaldo()
print(nyimpen.saldoawal)
print(self.counter)
return nyimpen.saldoawal, self.counter
def on_counter(self, *args):
print('counter', self.counter)
def on_ubahintsaldo(self, *args):
print('ubahintsaldo', self.ubahintsaldo)
def on_saldo_value(self, *args):
print('saldo_value', self.saldo_value)
class AlfredaApp(App):
def build(self):
Builder.load_file('./alfreda.kv')
return MasukTol()
pass
if __name__ == '__main__':
AlfredaApp().run()
pass
阿尔弗雷德.kv
<MasukTol>:
id: masuk_tol
Label:
id: Saldo
text: root.saldo_value
# Nomor 1
Button:
# background_normal: "photos/atm_1.png"
# background_down: "photos/atm_down_1.png"
text: str(root.counter)
allow_stretch: True
keep_ratio: False
size_hint: 0.11, 0.141
# pos_hint:{"x":root.kiri_atm, "y":root.atas_atm}
on_release:
root.pencetsatu()
正如刚才提到的:感谢 kivy StringProperty,代码现在可以满足您的预期。https://kivy.org/doc/stable/api-kivy.properties.html
推荐阅读
- asynchronous - 包装 AsyncRead `self` 具有匿名生命周期 `'_`,但它需要满足 `'static` 生命周期要求
- c++ - 使用 KXmlGuiWindow 构建 C++ 应用程序时出错
- github - 我该如何解决:已关闭问题:需要更多调试细节
- variables - 带有 tims 和变量比较的 InfluxDB 查询
- python - 如何根据在另一个模型中的 Many2many 字段中添加或删除数据自动在模型中创建记录
- javascript - 如何为 dataLayer 创建一个在博客页面上推送字符数量的变量?
- c++ - 我正在尝试从列表中删除一个具有最小值的节点,但是我在重建节点之间的链接时遇到了问题
- javascript - 如何访问从 AJAX 请求返回的 JSON 数据?
- python - 如何从 YOLOv5 预测中获取类和边界框坐标?
- mysql - 在 MySQL 中具有排名的加权 SUM