我试图使用python编写的函数在KivyMD中编辑屏幕中的文本字段。如果kivy代码不是作为屏幕的一部分,但一旦在屏幕上出现ID问题,那么它就可以正常工作
from kivymd.app import MDApp
from kivy.core.window import Window
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen, ScreenManager
from kivymd.uix.gridlayout import MDGridLayout
from kivymd.uix.picker import MDDatePicker
from kivymd.uix.picker import MDThemePicker
screen_helper = """
ScreenManager:
AssignmentScreen:
<AssignmentScreen>:
name: 'assignment'
MDGridLayout:
pos_hint: {'center_y':0.5}
rows: 6
row_default_height: 125
adaptive_height: True
MDTextField:
hint_text: "Assignment title"
MDTextField:
hint_text: "Module"
MDBoxLayout:
MDTextField:
id: pickedDates
hint_text: "Deadline"
MDRectangleFlatButton:
text: "Pick Date"
on_press: app.show_date_picker()
MDTextField:
hint_text: "Estimated hours"
MDTextField:
hint_text: "Assignment Weight (%)"
"""
class AssignmentScreen(Screen):
pass
sm = ScreenManager()
sm.add_widget(AssignmentScreen(name='assignment'))
class AssignmentTracker(MDApp):
def show_theme_picker(self):
theme_dialog = MDThemePicker()
theme_dialog.open()
def show_date_picker(self):
MDDatePicker(self.set_date).open()
def set_date(self, date_obj):
self.root.ids.pickedDates.text = "test"
pass
def build(self):
self.theme_cls.theme_style = "Dark"
screen = Builder.load_string(screen_helper)
return screen
Window.size = (350, 700)
AssignmentTracker().run()
当函数set_date()运行时,它会与AttributeError: 'super' object has no attribute '__getattr__'
一起崩溃,因为如果MDTextField在屏幕内,我不知道如何引用它
这是因为
MDTextField
在另一个类中相关问题 更多 >
编程相关推荐