python - KivyMD 如何从 KivyMD 文本字段中获取和更改文本
问题描述
class MainWindow(Screen):
def __init__(self, **kwargs):
super(MainWindow, self).__init__(**kwargs)
gang = ObjectProperty(None)
gang.text = 'Button'
class SecondWindow(Screen):
def __init__(self, **kwargs):
super(SecondWindow, self).__init__(**kwargs)
Test().run()
和 KV 码
WindowManager:
MainWindow:
SecondWindow:
<MainWindow>:
gang:gang
MDFillRoundFlatButton
text:"Validate"
size_hint:0.3, None
pos_hint: {'center_x': 0.5, 'top':0.2}
MDTextFieldRound
id:gang
hint_text:"Enter Your License Key"
multiline:False
size_hint: (0.7, None)
pos_hint: {"center_x": .5, "center_y": .5}
halign:"center"
<SecondWindow>:
name: "second"
on_enter:app.file_manager_open()
每当我运行它时,我都会得到输出'AttributeError:'kivy.properties.ObjectProperty'对象没有属性'text''我猜想对象属性没有同步,我很抱歉代码超级混乱。
解决方案
在类中定义 aProperty
时,它必须在任何方法之外。尝试改变:
class MainWindow(Screen):
def __init__(self, **kwargs):
super(MainWindow, self).__init__(**kwargs)
gang = ObjectProperty(None)
gang.text = 'Button'
至:
class MainWindow(Screen):
gang = ObjectProperty(None)
def on_kv_post(self, base_widget):
self.gang.text = 'Button'
这定义了ObjectProperty
正确的,并延迟text
属性的设置,直到ObjectProperty
设置。
推荐阅读
- google-apps-script - 通过名称获取 Google Drive 中文件的 URL
- java - 如何正确更新一对多休眠关系中的表(通过一个请求)?
- python - How to sort a list from ascending to decsending discord.py
- flutter - 如何获取扩展程序或实施程序子的类型
- php - 如何在没有 Artisan 的情况下在 Xampp 上运行 laravel
- php - Authentification against Active Directory from symfony 5
- r - Plot weekly percentage of titles containing a given term
- r - ggplot2: two lines from one dataset, specify color and lm for one
- python - 如何在烧瓶 send_file 中发送工作簿(openpyxl)?
- ibm-cloud - 为 IBM Cloud 的 POWER-IAAS 部分导入自定义 Linux 映像?