【问题标题】:Unable to add kivymd's MDTextField in MDGridLayout无法在 MDGridLayout 中添加 kivymd 的 MDTextField
【发布时间】:2021-06-16 07:56:35
【问题描述】:

我是 kivy 框架的新手,但是我正在尝试制作一个简单的登录屏幕,其中会有一个文本字段和一个按钮

我的 Python 代码是:

from kivymd.app import MDApp
from kivy.uix.screenmanager import Screen,\
                                    ScreenManager

from kivy.lang import Builder

class Project (MDApp):
    def build (self):
        return Builder.load_file('main.kv')
    
Project().run()

main.kv文件是:

Screen:
    MDBoxLayout:
        orientation:'vertical'
        md_bg_color:1,0,0,1
        MDToolbar:
        MDGridLayout:
            cols:1
            adaptive_height: True
            MDLabel:
                text:'Manic'
                halign:'center'
            MDTextField:

我收到以下错误:

[INFO] [Logger] 记录日志到 /storage/emulated/0/@tsmile/projects/pro_two/.kivy/logs/kivy_21-03-19_38.txt
[信息] [Kivy] v1.11.1
[信息] [Kivy] 安装在“/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/init .py"
[INFO] [Python] v3.8.3(默认,2020 年 5 月 27 日,02:08:17) [GCC 9.3.0]
[信息] [Python] 解释器位于“/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/bin/python3”
[INFO] [Logger] 清除日志已触发。正在分析...
[INFO] [Logger] 清除 15 个日志文件
[INFO] [Logger] 清除完成!
[信息] [KivyMD] v0.104.1
[信息] [工厂] 已加载 184 个符号
[信息] [图像] 提供者:img_tex、img_dds、img_sdl2、img_pil、img_gif(img_ffpyplayer 被忽略)
[信息] [窗口] 提供者:sdl2
[INFO ] [GL ] 使用“OpenGL ES 2”图形系统
[INFO] [GL] 后端使用
[信息] [GL] OpenGL 版本
[INFO] [GL] OpenGL 供应商
[INFO] [GL] OpenGL 渲染器
[INFO] [GL] OpenGL 解析版本:3、2
[INFO] [GL] 纹理最大尺寸
[INFO] [GL] 纹理最大单位
[INFO] [Window] 自动添加 sdl2 输入提供程序
[INFO] [Window] 虚拟键盘不允许,单模式,不停靠 [信息] [文本] 提供者:sdl2 [INFO] [GL] NPOT 纹理支持可用 [信息] 应用启动 [信息] main.kv 已加载 [信息] security.kv 已加载 [警告] [基础] 未知提供者 [INFO] [Base] 启动应用程序主循环 [INFO ] [Base ] 正在退出申请...

回溯(最近一次通话最后一次):
文件“/storage/emulated/0/@tsmile/projects/pro_two/main.py”,第 36 行,在
项目().run()

文件“/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/app.py”,第 855 行,正在运行
运行TouchApp()

文件“/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/base.py”,第 504 行,在 runTouchApp
EventLoop.window.mainloop()

文件“/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/core/window/window_sdl2.py”,第747行,在主循环中
self._mainloop()

文件“/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/core/window/window_sdl2.py”,第479行,在 _mainloop
EventLoop.idle()

文件“/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/base.py”,第 339 行,空闲
时钟.tick() 文件“/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/clock.py”,第 591 行,勾选 self._process_events() 文件“kivy/_clock.pyx”,第 384 行,在 kivy._clock.CyClockBase._process_events 文件“kivy/_clock.pyx”,第 414 行,在 kivy._clock.CyClockBase._process_events 文件“kivy/_clock.pyx”,第 412 行,在 kivy._clock.CyClockBase._process_events 文件“kivy/_clock.pyx”,第 154 行,在 kivy._clock.ClockEvent.tick 文件“kivy/_clock.pyx”,第 86 行,在 kivy._clock.ClockEvent.get_callback 文件“/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/weakmethod.py”,第 56 行,在 is_dead return self.proxy 不是 None 也不是 bool(dir(self.proxy))

ReferenceError: 弱引用对象不再存在

我收到参考错误错误,其中说的是

弱引用对象不存在

谁能建议我如何将 MDTextField 添加到 MDGridLayout?

另外请告诉我为什么会出现这种错误。

【问题讨论】:

    标签: python android python-3.x kivy kivy-language


    【解决方案1】:

    考虑到您的意愿,我稍微修正了您的布局。 .py 保持不变,更新的 .kv 在这里:

    Screen:
    MDBoxLayout:
        orientation:'vertical'
        md_bg_color:1,0,0,1
        MDToolbar:
            pos_hint_y: 0
        GridLayout:
            cols:1
            adaptive_height: True
            MDLabel:
                text:'Manic'
                halign:'center'
            BoxLayout:
                cols: 2
                rows: 1
    
                MDLabel:
                    halign:'center'
                    size_hint_y: 0.4
                    size_hint_x: 0.3
    
                MDTextFieldRect:
                    size_hint_y: 0.4
                MDFlatButton:
                    text: "Test"
                    md_bg_color: 1,1,0,1
                    size_hint_y: 0.4
                    size_hint_x: 0.3
            MDLabel:
                halign:'center'
                size_hint_y: 0.2
    

    至于弱引用对象:

    在基本层面上,弱引用是对对象的引用,该对象将被垃圾回收器删除。如果您想了解更多信息,建议您查看@AlexMartelli 在this 帖子上的详细回答。

    【讨论】:

    • 非常感谢 现在一切正常。但我仍然需要了解更多关于弱​​引用错误的信息。 ??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2021-05-03
    相关资源
    最近更新 更多