我的 Kivy 应用程序在 Android 手机上启动时崩溃。buildozer logcat 显示以下错误:
02-21 17:09:58.777 14941 14979 I python : ModuleNotFoundError: No module named 'PIL'
02-21 17:09:58.777 14941 14979 I python : Python for android ended.
Run Code Online (Sandbox Code Playgroud)
这是我的 buildozer.spec 要求:
requirements = python3,kivy==2.0.0,git+https://github.com/HeaTTheatR/KivyMD.git,sdl2_ttf==2.0.15,python-dateutil,requests,urllib3,chardet,idna,plyer,android,jnius,oscpy
Run Code Online (Sandbox Code Playgroud)
据我了解,只有 KivyMD 依赖于 PIL。该应用程序在我的 Mac 上完美运行,之前在 Android 手机上也运行良好。错误才刚刚开始发生。所以,我真的很困惑,非常感谢任何帮助。提前致谢!
我的应用程序在使用 kivy==2.0.0 和 kivymd 时运行良好,但在 Android 设备中不显示数字键盘。因此,正如我所调查的,我必须使用 kivy 的 master 分支来解决这个问题。现在,当我使用 master 分支运行应用程序时,我收到此错误:
“ ModuleNotFoundError:没有名为 'kivy.graphics.instructions' 的模块”
即使当我运行 kivy 的示例时,我也会收到相同的错误。请告诉我我应该做什么,并提前谢谢您。
我是 Kivy 的新手,我想为我的应用程序制作一个登录屏幕。我有两个问题。首先,在我的 Gridlayout 中,我有 3 个 MDIconbuttons,无论我如何尝试,它们似乎都无法居中。其次,我想要带有文本“忘记密码/用户名?”的 MDLabel。为了更接近我上面的 MDTextFieldRound,但是放入负填充会移动文本,但不会移动按钮行为。
主要.py
import kivy
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.behaviors.button import ButtonBehavior
from kivymd.app import MDApp
from kivymd.theming import ThemeManager
class SignInScreen(Screen):
pass
class ButtonGrid(ButtonBehavior, BoxLayout):
pass
class AttendanceApp(MDApp):
def build(self):
self.theme_cls.primary_palette = "LightBlue"
self.theme_cls.accent_palette = "Red"
return SignInScreen()
def change_theme(self, primary_palette, accent_palette):
pass
#theme_cls = ThemeManager()
def signin_pressed(self, instance):
pass
if __name__ == "__main__":
AttendanceApp().run()
Run Code Online (Sandbox Code Playgroud)
出勤率.kv
# Filename: Attendance.kv
#:import utils …Run Code Online (Sandbox Code Playgroud) 我正在尝试width增加heightkivyMD button,但它不受支持(size_hint)。
\xe2\x80\xa2我应该创建自己的从 Button 类继承的按钮类吗?
\n\xe2\x80\xa2考虑到我希望我的应用程序在 Android 上运行,这会很糟糕吗?
\n我想知道之前是否有人解决过这个问题。另外,如果我增加按钮的尺寸,我也希望文本的大小改变......
\n我正在制作一个KivyMD应用程序,我想在用户注册该应用程序时发送电子邮件验证码。我正在为这个项目使用firestore数据库python。但我没有这样做的想法。注册流程是
OTP Code)的电子邮件应发送到用户的电子邮件。这能按照我预想的方式完成吗?或者还有其他更好的方法吗?请朋友们帮助我。先感谢您...
python firebase firebase-authentication google-cloud-firestore kivymd
MDDataTable我在将 kivymd组件作为子小部件添加到 .kv 文件中的屏幕时遇到一些问题。不断收到KeyError: 'container'错误AttributeError: 'super' object has no attribute '__getattr__。我浏览了文档和多个站点,每个人似乎都在使用文档中找到的示例的某种变体,它在构建方法中启动组件。
我想说的是如果这有效的话
class Example(MDApp):
def build(self):
screen = Screen()
data_tables = MDDataTable(
size_hint=(0.9, 0.6),
column_data=[
('Template Id', dp(30)),
('Name', dp(30))
],
row_data=[
('23lkjk33', 'Ayang Paul'),
('28ij399kk', 'Ringwa Justin')
]
)
screen.add_widget(data_tables)
return screen
Example().run()
Run Code Online (Sandbox Code Playgroud)
那为什么这不起作用
KV = '''
Screen:
MDDataTable:
size_hint: 0.9, 0.6
pos_hint: {"center_x": 0.5, "center_y": 0.5}
column_data: [('Template Id', dp(30)), ('Name', dp(30))]
row_data: [('23lkjk33', 'Ayang Paul'), ('28ij399kk', 'Ringwa Justin')]
'''
class Example(MDApp):
def …Run Code Online (Sandbox Code Playgroud) 示例代码似乎有点过时,例如我必须将“NavigationLayout”替换为“MDNavigationLayout”。
我使用的是从github下载的最新的kivymd
from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.core.window import Window
Window.size = (300, 500)
navigation_helper = """
Screen:
MDNavigationLayout:
ScreenManager:
Screen:
BoxLayout:
orientation: 'vertical'
MDToolbar:
title: "Navigation Drawer"
elevation: 10
left_action_items: [['menu', lambda x: nav_drawer.toggle_nav_drawer()]]
Widget:
MDNavigationDrawer:
id: nav_drawer
"""
class DemoApp(MDApp):
def build(self):
screen = Builder.load_string(navigation_helper)
return screen
DemoApp().run()
Run Code Online (Sandbox Code Playgroud) 我正在使用 KivyMD,并且想使用“on_pre_enter”方法刷新第二个屏幕中的数据。我试图从屏幕类“on_pre_enter”方法访问标签 ID,但没有成功。
我可以从“MainApp”类访问标签ID,但无法从“Second_Screen”类访问它。
主应用程序.py
from kivy.lang import Builder
from kivymd.app import MDApp
from kivy.uix.screenmanager import ScreenManager, Screen
class MainApp(MDApp):
def __init__(self, **kwargs):
self.title = "My Material Application"
self.theme_cls.primary_palette = "Blue"
super().__init__(**kwargs)
def on_start(self):
self.root.ids.main_screen_label.text = "Main Screen Updated"
def build(self):
self.root = Builder.load_file("app.kv")
class Second_Screen(Screen):
def on_pre_enter(self):
MainApp.ids.second_screen_label = "Second Screen Updated"
pass
if __name__ == "__main__":
MainApp().run()
Run Code Online (Sandbox Code Playgroud)
应用程序kv
NavigationLayout:
MDNavigationDrawer:
NavigationDrawerSubheader:
text: "Menu:"
NavigationDrawerIconButton:
icon:'battery'
text: "Main Screen"
on_release:
screen_manager.current = "main_screen"
NavigationDrawerIconButton:
icon:'battery'
text: "Second Screen"
on_release: …Run Code Online (Sandbox Code Playgroud) 我正在使用KivyMD 0.102.0,它在运行 main.py 文件时给了我一个错误。
我收到以下错误。
Error: No module named 'kivymd.app'
Run Code Online (Sandbox Code Playgroud)
运行此示例代码时