KivyMD - right/left_action_items 导致 "weakly-referenced object no longer exists"
KivyMD - right/left_action_items causes "weakly-referenced object no longer exists"
我正在尝试学习 KivyMD 并决定编写一个简单的购物清单应用程序。
我想通过对话框 window 添加新条目到购物清单。尝试 运行 以下代码时出现错误:
from kivymd.app import MDApp
from kivymd.uix.list import MDList, IconLeftWidget, OneLineIconListItem
from kivymd.icon_definitions import md_icons
from kivymd.uix.toolbar import MDToolbar
from kivymd.uix.dialog import MDDialog
from kivy.properties import ObjectProperty
from kivymd.uix.boxlayout import BoxLayout
from kivy.uix.scrollview import ScrollView
from kivymd.uix.screen import Screen
from kivymd.uix.button import MDFlatButton
from kivymd.uix.textfield import MDTextFieldRect, MDTextField
class ShoppingListApp(MDApp):
def build(self):
screen = Screen()
scroll = ScrollView()
toolbar = MDToolbar(title="Shopping List", anchor_title="center")
toolbar.right_action_items = [['plus', self.dialog_window]]
screen.add_widget(scroll)
self.kvmd_list = MDList()
#self.test_button = MDFlatButton(text="TEST BUTTON", on_press=self.dialog_window)
#screen.add_widget(self.test_button)
scroll.add_widget(self.kvmd_list)
self.theme_cls.theme_style = "Light"
self.theme_cls.primary_palette = "BlueGray"
self.theme_cls.primary_hue = '400'
self.kvmd_list.add_widget(toolbar)
return screen
def dialog_window(self, obj):
self.dialog = MDDialog(
title="Add new item:",
buttons=[
MDFlatButton(
text="Add",
),
],
)
self.dialog.set_normal_height()
self.dialog.open()
ShoppingListApp().run()
我得到的错误是:
weakly-referenced object no longer exists
我把范围缩小到 toolbar.right_action_items = [['plus', self.dialog_window]]
,不管是左还是右。
当我取消注释 self.test.button
时,问题消失了。
我不明白为什么会这样。我在这里错过了一些非常基本的东西吗?
谢谢。
使用Kivy Kivy 2.0.0rc3版本。
我正在尝试学习 KivyMD 并决定编写一个简单的购物清单应用程序。
我想通过对话框 window 添加新条目到购物清单。尝试 运行 以下代码时出现错误:
from kivymd.app import MDApp
from kivymd.uix.list import MDList, IconLeftWidget, OneLineIconListItem
from kivymd.icon_definitions import md_icons
from kivymd.uix.toolbar import MDToolbar
from kivymd.uix.dialog import MDDialog
from kivy.properties import ObjectProperty
from kivymd.uix.boxlayout import BoxLayout
from kivy.uix.scrollview import ScrollView
from kivymd.uix.screen import Screen
from kivymd.uix.button import MDFlatButton
from kivymd.uix.textfield import MDTextFieldRect, MDTextField
class ShoppingListApp(MDApp):
def build(self):
screen = Screen()
scroll = ScrollView()
toolbar = MDToolbar(title="Shopping List", anchor_title="center")
toolbar.right_action_items = [['plus', self.dialog_window]]
screen.add_widget(scroll)
self.kvmd_list = MDList()
#self.test_button = MDFlatButton(text="TEST BUTTON", on_press=self.dialog_window)
#screen.add_widget(self.test_button)
scroll.add_widget(self.kvmd_list)
self.theme_cls.theme_style = "Light"
self.theme_cls.primary_palette = "BlueGray"
self.theme_cls.primary_hue = '400'
self.kvmd_list.add_widget(toolbar)
return screen
def dialog_window(self, obj):
self.dialog = MDDialog(
title="Add new item:",
buttons=[
MDFlatButton(
text="Add",
),
],
)
self.dialog.set_normal_height()
self.dialog.open()
ShoppingListApp().run()
我得到的错误是:
weakly-referenced object no longer exists
我把范围缩小到 toolbar.right_action_items = [['plus', self.dialog_window]]
,不管是左还是右。
当我取消注释 self.test.button
时,问题消失了。
我不明白为什么会这样。我在这里错过了一些非常基本的东西吗?
谢谢。
使用Kivy Kivy 2.0.0rc3版本。