为什么弹出式关闭方法会导致错误?(python kivymd)
我正在尝试制作一个应用程序。点击屏幕右下角的按钮,出现一个对话框窗口(弹出窗口)。单击“完成”后,弹出窗口将关闭(为什么弹出式关闭方法会导致错误?(python kivymd),python,kivy,kivymd,Python,Kivy,Kivymd,我正在尝试制作一个应用程序。点击屏幕右下角的按钮,出现一个对话框窗口(弹出窗口)。单击“完成”后,弹出窗口将关闭(close\u dialogmethod),但由于某些原因,出现AttributeError: AttributeError:“grudget4App”对象没有属性“close_dialog” 你能告诉我为什么代码不工作以及如何修复它吗。谢谢 .py代码: from kivy.lang import Builder from kivy.core.window import Windo
close\u dialog
method),但由于某些原因,出现AttributeError:
AttributeError:“grudget4App”对象没有属性“close_dialog”
你能告诉我为什么代码不工作以及如何修复它吗。谢谢
.py代码:
from kivy.lang import Builder
from kivy.core.window import Window
from kivymd.app import MDApp
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.scrollview import ScrollView
from kivymd.uix.button import MDFlatButton
from kivymd.uix.dialog import MDDialog
from kivymd.uix.textfield import MDTextField
from kivy.uix.textinput import TextInput
from kivy.uix.screenmanager import Screen, ScreenManager
from kivymd.uix.list import TwoLineAvatarListItem
Window.size = (288, 511)
class DialogContent(BoxLayout):
pass
class Container(Screen):
dialog = None
def show_dialog(self, *args):
'''
Create group creation popup
'''
if not self.dialog:
self.dialog = MDDialog(
title="Create new group",
type="custom",
content_cls=DialogContent(),
auto_dismiss=False
)
self.dialog.open()
def close_dialog(self, *args):
'''
Close popup on Done click
'''
self.dialog.dismiss()
class grudget4App(MDApp):
def build(self):
container = Container()
return container
if __name__ == '__main__':
grudget4App().run()
.kv代码:
<DialogContent>:
textfield: textfield
orientation: "vertical"
spacing: "12dp"
size_hint_y: None
height: "120dp"
MDTextField:
id: textfield
hint_text: "Group name"
MDFlatButton:
id: btn1
text: "Done"
text_color: self.theme_cls.primary_color
on_release: app.close_dialog()
<Container>:
MDFloatingActionButton:
pos_hint: {'right': 0.95, 'y': 0.05}
icon: "icon.png"
theme_text_color: "Custom"
text_color: app.theme_cls.primary_color
on_release:
root.show_dialog()
Screen:
NavigationLayout:
ScreenManager:
Screen:
BoxLayout:
orientation: 'vertical'
MDToolbar:
title: 'Demo Application'
left_action_items: [["menu", lambda x: nav_drawer.toggle_nav_drawer()]]
elevation:10
Widget:
MDNavigationDrawer:
id: nav_drawer
:
textfield:textfield
方向:“垂直”
间距:“12dp”
尺寸提示:无
高度:“120dp”
MDTextField:
id:textfield
提示文字:“组名”
MDFlatButton:
id:btn1
正文:“完成”
文本颜色:self.theme\u cls.primary\u颜色
发布时:应用程序关闭对话框()
:
MDFloatingActionButton:
位置提示:{'right':0.95,'y':0.05}
图标:“icon.png”
主题\文本\颜色:“自定义”
文本颜色:app.theme\u cls.primary\u颜色
发布时:
root.show_dialog()
屏幕:
导航布局:
屏幕管理器:
屏幕:
盒子布局:
方向:“垂直”
MDToolbar:
标题:“演示应用程序”
左键动作项:[[“菜单”,lambda x:nav_抽屉。切换导航抽屉()
标高:10
小装置:
MDNavigationDrawer:
id:nav_抽屉
发布时的方法:app.close\u dialog()
引用了您的grudget4App
类,但您希望在容器中调用该方法
因此,我们需要在你的应用程序中设置正确的屏幕。由于Container
是其中唯一的屏幕,也是根,因此您可以使用:
on_release: app.root.close_dialog()
非常感谢。如果它不是唯一的屏幕呢?在泰国的情况下,我们如何获得正确的屏幕?然后您可以使用root.screens[screenIndex]
或root.get\u screen[“screenName”]