无法在 MDGridLayout 中添加 kivymd 的 MDTextField
Unable to add kivymd's MDTextField in MDGridLayout
我是 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 ] Record log in /storage/emulated/0/@tsmile/projects/pro_two/.kivy/logs/kivy_21-03-19_38.txt
[INFO ] [Kivy ] v1.11.1
[INFO ] [Kivy ] Installed at "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/init.py"
[INFO ] [Python ] v3.8.3 (default, May 27 2020, 02:08:17)
[GCC 9.3.0]
[INFO ] [Python ] Interpreter at "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/bin/python3"
[INFO ] [Logger ] Purge log fired. Analysing...
[INFO ] [Logger ] Purge 15 log files
[INFO ] [Logger ] Purge finished!
[INFO ] [KivyMD ] v0.104.1
[INFO ] [Factory ] 184 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] Using the "OpenGL ES 2" graphics system
[INFO ] [GL ] Backend used
[INFO ] [GL ] OpenGL version <b'OpenGL ES 3.2 v1.r20p0-01rel0.5a1b26bb5d6f760a7fe004c7d2efd431'>
[INFO ] [GL ] OpenGL vendor <b'ARM'>
[INFO ] [GL ] OpenGL renderer <b'Mali-G72 MP3'>
[INFO ] [GL ] OpenGL parsed version: 3, 2
[INFO ] [GL ] Texture max size <8192>
[INFO ] [GL ] Texture max units <16>
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
[INFO ] [Text ] Provider: sdl2
[INFO ] [GL ] NPOT texture support is available
[INFO ] app started
[INFO ] main.kv loaded
[INFO ] security.kv loaded
[WARNING] [Base ] Unknown provider
[INFO ] [Base ] Start application main loop
[INFO ] [Base ] Leaving application in progress...
Traceback (most recent call last):
File "/storage/emulated/0/@tsmile/projects/pro_two/main.py", line 36, in
Project().run()
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/app.py", line 855, in run
runTouchApp()
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/base.py", line 504, in runTouchApp
EventLoop.window.mainloop()
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/core/window/window_sdl2.py", line 747, in mainloop
self._mainloop()
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/core/window/window_sdl2.py", line 479, in _mainloop
EventLoop.idle()
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/base.py", line 339, in idle
Clock.tick()
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/clock.py", line 591, in tick
self._process_events()
File "kivy/_clock.pyx", line 384, in kivy._clock.CyClockBase._process_events
File "kivy/_clock.pyx", line 414, in kivy._clock.CyClockBase._process_events
File "kivy/_clock.pyx", line 412, in kivy._clock.CyClockBase._process_events
File "kivy/_clock.pyx", line 154, in kivy._clock.ClockEvent.tick
File "kivy/_clock.pyx", line 86, in kivy._clock.ClockEvent.get_callback
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/weakmethod.py", line 56, in is_dead
return self.proxy is not None and not bool(dir(self.proxy))
ReferenceError: weakly-referenced object no longer exists
我收到引用错误,其中显示
Weakly referenced objects do not exist
谁能建议我如何将 MDTextField 添加到 MDGridLayout?
也请告诉我为什么会出现这种错误。
考虑到您的意愿,我稍微修改了您的布局。 .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 post.
上的详细回答
我是 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 ] Record log in /storage/emulated/0/@tsmile/projects/pro_two/.kivy/logs/kivy_21-03-19_38.txt
[INFO ] [Kivy ] v1.11.1
[INFO ] [Kivy ] Installed at "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/init.py"
[INFO ] [Python ] v3.8.3 (default, May 27 2020, 02:08:17) [GCC 9.3.0]
[INFO ] [Python ] Interpreter at "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/bin/python3"
[INFO ] [Logger ] Purge log fired. Analysing...
[INFO ] [Logger ] Purge 15 log files
[INFO ] [Logger ] Purge finished!
[INFO ] [KivyMD ] v0.104.1
[INFO ] [Factory ] 184 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] Using the "OpenGL ES 2" graphics system
[INFO ] [GL ] Backend used
[INFO ] [GL ] OpenGL version <b'OpenGL ES 3.2 v1.r20p0-01rel0.5a1b26bb5d6f760a7fe004c7d2efd431'>
[INFO ] [GL ] OpenGL vendor <b'ARM'>
[INFO ] [GL ] OpenGL renderer <b'Mali-G72 MP3'>
[INFO ] [GL ] OpenGL parsed version: 3, 2
[INFO ] [GL ] Texture max size <8192>
[INFO ] [GL ] Texture max units <16>
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked [INFO ] [Text ] Provider: sdl2 [INFO ] [GL ] NPOT texture support is available [INFO ] app started [INFO ] main.kv loaded [INFO ] security.kv loaded [WARNING] [Base ] Unknown provider [INFO ] [Base ] Start application main loop [INFO ] [Base ] Leaving application in progress...Traceback (most recent call last):
File "/storage/emulated/0/@tsmile/projects/pro_two/main.py", line 36, in
Project().run()File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/app.py", line 855, in run
runTouchApp()File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/base.py", line 504, in runTouchApp
EventLoop.window.mainloop()File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/core/window/window_sdl2.py", line 747, in mainloop
self._mainloop()File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/core/window/window_sdl2.py", line 479, in _mainloop
EventLoop.idle()File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/base.py", line 339, in idle
Clock.tick() File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/clock.py", line 591, in tick self._process_events() File "kivy/_clock.pyx", line 384, in kivy._clock.CyClockBase._process_events File "kivy/_clock.pyx", line 414, in kivy._clock.CyClockBase._process_events File "kivy/_clock.pyx", line 412, in kivy._clock.CyClockBase._process_events File "kivy/_clock.pyx", line 154, in kivy._clock.ClockEvent.tick File "kivy/_clock.pyx", line 86, in kivy._clock.ClockEvent.get_callback File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/site-packages/kivy/weakmethod.py", line 56, in is_dead return self.proxy is not None and not bool(dir(self.proxy))ReferenceError: weakly-referenced object no longer exists
我收到引用错误,其中显示
Weakly referenced objects do not exist
谁能建议我如何将 MDTextField 添加到 MDGridLayout?
也请告诉我为什么会出现这种错误。
考虑到您的意愿,我稍微修改了您的布局。 .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 post.
上的详细回答