100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > python顺序执行 toggle_pythonkivymd:如何使toggle_nav_drawer()函数工作?

python顺序执行 toggle_pythonkivymd:如何使toggle_nav_drawer()函数工作?

时间:2022-12-28 22:12:44

相关推荐

python顺序执行 toggle_pythonkivymd:如何使toggle_nav_drawer()函数工作?

我的kv代码有问题。我想用几个NavigationDrawerIconButtons创建一个MDNavigationDrawer。窗口会出现,但当我单击MDToolbar时,程序崩溃并显示此错误消息。在Traceback (most recent call last):

File "C:/Users/path/to/my/file/main.py", line 189, in

KivyGUI().run()

File "C:\Users\uname\Anaconda3\lib\site-packages\kivy\app.py", line 855, in run

runTouchApp()

File "C:\Users\uname\Anaconda3\lib\site-packages\kivy\base.py", line 504, in runTouchApp

EventLoop.window.mainloop()

File "C:\Users\uname\Anaconda3\lib\site-packages\kivy\core\window\window_sdl2.py", line 746, in mainloop

self._mainloop()

File "C:\Users\uname\Anaconda3\lib\site-packages\kivy\core\window\window_sdl2.py", line 478, in _mainloop

EventLoop.idle()

File "C:\Users\uname\Anaconda3\lib\site-packages\kivy\base.py", line 342, in idle

self.dispatch_input()

File "C:\Users\uname\Anaconda3\lib\site-packages\kivy\base.py", line 327, in dispatch_input

post_dispatch_input(*pop(0))

File "C:\Users\uname\Anaconda3\lib\site-packages\kivy\base.py", line 293, in post_dispatch_input

wid.dispatch('on_touch_up', me)

File "kivy\_event.pyx", line 707, in kivy._event.EventDispatcher.dispatch

File "C:\Users\uname\Anaconda3\lib\site-packages\kivymd\ripplebehavior.py", line 84, in on_touch_up

return super().on_touch_up(touch)

File "C:\Users\uname\Anaconda3\lib\site-packages\kivymd\button.py", line 480, in on_touch_up

return super().on_touch_up(touch)

File "C:\Users\uname\Anaconda3\lib\site-packages\kivy\uix\behaviors\button.py", line 179, in on_touch_up

self.dispatch('on_release')

File "kivy\_event.pyx", line 703, in kivy._event.EventDispatcher.dispatch

File "kivy\_event.pyx", line 1214, in kivy._event.EventObservers.dispatch

File "kivy\_event.pyx", line 1138, in kivy._event.EventObservers._dispatch

File "C:\Users\path\to\my\file\design.kv", line 59, in

left_action_items: [['dots-vertical', lambda x: root.toggle_nav_drawer()]]

File "kivy\weakproxy.pyx", line 32, in kivy.weakproxy.WeakProxy.__getattr__

AttributeError: 'LayoutPy' object has no attribute 'toggle_nav_drawer'

我从一个单独的文件导入kv代码。在

^{pr2}$

Python代码:import sys

import kivy

from kivy.app import App

from kivy.uix.floatlayout import FloatLayout

from kivy.uix.boxlayout import BoxLayout

from kivy.core.window import Window

from kivymd.theming import ThemeManager

from kivymd.label import MDLabel

from kivymd.textfields import MDTextField, MDTextFieldClear, MDTextFieldRect, MDTextFieldRound

from kivy.lang import Builder

from kivymd.navigationdrawer import MDNavigationDrawer, NavigationDrawerIconButton, NavigationLayout

from kivy.properties import ObjectProperty

from kivymd.toast import toast

kivy.require('1.11.0')

class LayoutPy(FloatLayout):

def __init__(self, **kwargs):

super(LayoutPy, self).__init__(**kwargs)

self.scr_mngr = ObjectProperty(None)

self.build_nav_btns()

def callback(self, instance, value):

toast("Pressed item menu %d" % value)

def exit(self):

sys.exit(1)

def build_nav_btns(self):

btns = ["Select Language", "Contact the developer", "Exit"]

for count, btn in enumerate(btns):

if count == 1:

self.ids.nav_drawer.add_widget(

NavigationDrawerIconButton(

icon='settings', text=btn,

on_release=lambda x, btn: self.callback(x, btn)))

elif count == 2:

self.ids.nav_drawer.add_widget(

NavigationDrawerIconButton(

icon='face', text=btn,

on_release=lambda x, btn: self.callback(x, btn)))

elif count == 3:

self.ids.nav_drawer.add_widget(

NavigationDrawerIconButton(

icon='close', text=btn,

on_release=lambda x: self.exit()))

Builder.load_file("design.kv")

class KivyGUI(App):

theme_cls = ThemeManager()

theme_cls.primary_palette = ("Teal")

title = ("App")

def build(self):

c = LayoutPy()

return c

if __name__ == "__main__":

KivyGUI().run()

我对Python代码进行了大量的裁剪,这样对您来说就更清楚了。我不认为这是模块本身的问题,因为KivyMD example code对我来说很好(这也是我运行它时解决方案的外观)。我认为问题是我的LayoutPy类继承了FloatLayout,它没有{}对象。。。但是我现在不知道如何在我现有的代码中实现一个合适的解决方案(我现在正在尝试两天)。如果您需要整个代码(在添加NavigationDrawer之前,一切都很好),您可以看看here。在

先谢谢你!在

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。