我已经在手机中安装了kivy。
我想做的是从系统编写一个脚本并将其放入 /sdcard/kivy/myapp 文件夹中。如何授予我的脚本权限?例如,蓝牙需要特殊权限才能访问它。有什么方法可以在脚本中授予访问蓝牙的权限吗?我知道我可以授予 apk 权限,但是有什么方法可以在脚本中授予权限吗?
我是第一次使用该Kivy库,并尝试使用TabbedPanel. 我会设置每个选项卡的大小(x在代码中TabbedPanelItem)以适合整个TabbedPanel宽度,但如果我在文件中使用height或,似乎它们不起作用。size_hint.kv
这是我的 kv 代码:
#:import sm kivy.uix.screenmanager
ScreenManagement:
transition: sm.FadeTransition()
SecondScreen:
<SecondScreen>:
tabba: tabba
name: 'second'
FloatLayout:
background_color: (255, 255, 255, 1.0)
BoxLayout:
orientation: 'vertical'
size_hint: 1, 0.10
pos_hint: {'top': 1.0}
canvas:
Color:
rgba: (0.98, 0.4, 0, 1.0)
Rectangle:
pos: self.pos
size: self.size
Label:
text: 'MyApp'
font_size: 30
size: self.texture_size
BoxLayout:
orientation: 'vertical'
size_hint: 1, 0.90
Tabba:
id: tabba
BoxLayout:
orientation: 'vertical'
size_hint: 1, 0.10 …Run Code Online (Sandbox Code Playgroud) 我正在使用钥匙从一个移动TextInput到另一个。
我想从最后一个移动到使用key 。当我再次按 Enter 键时,应该是调用功能。
有人可以告诉我怎么做吗?TextInputenterTextInputButtonenterroot.abc()
from kivy.uix.screenmanager import Screen
from kivy.app import App
from kivy.core.window import Window
Window.clearcolor = (0.5, 0.5, 0.5, 1)
Window.size = (300, 100)
class User(Screen):
def abc(self):
print('Test')
class Test(App):
def build(self):
return self.root
if __name__ == '__main__':
Test().run()
Run Code Online (Sandbox Code Playgroud)
User:
BoxLayout:
orientation: "vertical"
TextInput:
id:test1
focus : True
text: ' '
width: 100
multiline: False
on_text_validate: test2.focus = True
TextInput:
id:test2
text: ' '
width: …Run Code Online (Sandbox Code Playgroud) 几个星期以来,我使用 KivyMD 并且我爱上了这个 Kivy 主题。这是我的问题:我正在使用 KivyMD 制作一个多屏幕应用程序,我的第一个屏幕是“登录屏幕”。我想在我的主类中添加一个函数,该函数获取我的“用户名”文本字段和“密码”文本字段的值。如果标识符正确,我将转到“screen2”。
这是我的代码:
from kivy.app import App
from kivy.lang import Builder
from kivy.properties import ObjectProperty
from kivy.uix.boxlayout import BoxLayout
from kivymd.theming import ThemeManager
class MyLayout(BoxLayout):
scr_mngr = ObjectProperty(None)
def change_screen(self, screen, *args):
self.scr_mngr.current = screen
KV = """
#:import Toolbar kivymd.toolbar.Toolbar
#:import ThemeManager kivymd.theming.ThemeManager
#:import MDNavigationDrawer kivymd.navigationdrawer.MDNavigationDrawer
#:import NavigationLayout kivymd.navigationdrawer.NavigationLayout
#:import NavigationDrawerDivider
kivymd.navigationdrawer.NavigationDrawerDivider
#:import NavigationDrawerToolbar
kivymd.navigationdrawer.NavigationDrawerToolbar
#:import NavigationDrawerSubheader
kivymd.navigationdrawer.NavigationDrawerSubheader
#:import MDCheckbox kivymd.selectioncontrols.MDCheckbox
#:import MDSwitch kivymd.selectioncontrols.MDSwitch
#:import MDList kivymd.list.MDList
#:import OneLineListItem kivymd.list.OneLineListItem
#:import TwoLineListItem kivymd.list.TwoLineListItem
#:import …Run Code Online (Sandbox Code Playgroud) 我正在尝试在项目的第一个屏幕的顶部添加一个操作栏。我尝试使用screenmanager小部件并发送操作栏,因为它的子项喜欢如何管理/获取两个屏幕。起初,我尝试在第一个屏幕的 root.widget 中添加操作栏代码,但他们将此类显示为无效类。
两者如何添加呢?即使我添加了,我也无法从上到下显示按钮orientation : 'vertical'
import kivy
kivy.require('1.10.1')
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.uix.gridlayout import GridLayout
from kivy.uix.screenmanager import ScreenManager,Screen,FadeTransition
class SomeLayout_GridLayout(Screen):
pass
class FirstScreen(Screen):
pass
class SecondScreen(Screen):
pass
class ScreenManager(ScreenManager):
pass
root_widget = Builder.load_string('''
ScreenManager:
FirstScreen:
SecondScreen:
SomeLayout_GridLayout:
<FirstScreen>:
name: 'first'
<SomeLayout_GridLayout>:
cols: 1
rows: 2
row_force_default: True
rows_minimum: {0: ActionBar.height, 1: self.height - ActionBar.height}
SomeMenu_ActionBar:
id: ActionBar
<SomeMenu_ActionBar@ActionBar>:
ActionView:
id: ActionView
ActionGroup: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下代码使用 kivymd:
from kivy.app import App
from kivymd.theming import ThemeManager
from kivymd.navigationdrawer import MDNavigationDrawer
from kivymd.navigationdrawer import NavigationLayout
from kivymd.card import MDSeparator
class MyApp(App):
theme_cls=ThemeManager()
if __name__ == "__main__":
m = MyApp()
m.run()
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
from kivymd.navigationdrawer import MDNavigationDrawer
ModuleNotFoundError: No module named 'kivymd.navigationdrawer'
>>>
Run Code Online (Sandbox Code Playgroud)
这是我的 kv 文件:
#:import NavigationLayout kivymd.navigationdrawer.NavigationLayout
#:import MDSeparator kivymd.card
NavigationLayout:
MDNavigationDrawer:
<Button>:
text: "Hey"
Run Code Online (Sandbox Code Playgroud)
有人可以帮我弄这个吗 ?
当我尝试添加 kivymd 按钮 (MDRaishedButton) 时,我收到错误:“KivyMD:应用程序对象必须在加载之前初始化”。
我尝试调试,问题是当我在 DateScreen 下添加 BoxLayout 时,我只是找不到任何有关如何修复它的信息。
在加载之前应该如何初始化应用程序对象?
import kivy
kivy.require("1.11.1")
from kivy.app import App
from kivy.lang import Builder
from kivy.clock import Clock
from kivy.uix.screenmanager import Screen
from kivymd.theming import ThemeManager
class WelcomeScreen(Screen): # Defines WelcomeScreen instance as a screen widget.
pass
class DateScreen(Screen): # Defines DateScreen instance as a screen widget.
pass
class ResultScreen(Screen): # Defines ResultScreen instance as a screen widget.
pass
root_widget = Builder.load_string("""
ScreenManager:
WelcomeScreen:
DateScreen:
ResultScreen:
<WelcomeScreen>:
_welcome_screen_text_: welcome_screen
name: 'my_welcome_screen'
Label: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 kivy 创建一个应用程序。我正在使用 RecycleView 动态创建一堆按钮。我的问题是,我不确定如何在按下按钮时绑定回调,因为我不太确定代码实际上是如何制作按钮的。我需要在 RV 类中创建一个方法吗?如果是这样,我将如何在字符串生成器中将它与 kivy 语言一起使用?此外,我如何访问创建的按钮?它们存储在self.data变量中吗?最后,创建的按钮是小部件还是其他类型的数据?
from kivy.app import App, ObjectProperty
from kivy.uix.recycleview import RecycleView
from kivy.lang import Builder
KV = """
<RV>:
viewclass: 'Button' # defines the viewtype for the data items.
orientation: "vertical"
spacing: 40
padding:10, 10
space_x: self.size[0]/3
RecycleBoxLayout:
color:(0, 0.7, 0.4, 0.8)
default_size: None, dp(56)
default_size_hint: 0.4, None
size_hint_y: None
height: self.minimum_height
orientation: 'vertical' # defines the orientation of data items
"""
Builder.load_string(KV)
class RV(RecycleView):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.data = …Run Code Online (Sandbox Code Playgroud) 我已将 .py 文件转换为使用移动设备相机的 apk 文件,为此我使用 kivy 库,并在 pycharm 编辑器中使用 buildozer 编译所有这些
\n要编译应用程序,请使用以下命令:
\nbuildozer -v android debug\nRun Code Online (Sandbox Code Playgroud)\n问题是,一旦安装在我的移动设备上,打开应用程序时它会自动关闭,因此要查看错误,请使用 log cat 命令
\nadb -s 1573273300008C8 logcat *:S python:D\nRun Code Online (Sandbox Code Playgroud)\n生成的错误如下:
\n(venv) acardenas@acardenas-VirtualBox:~/PycharmProjects/ArucoProject/bin$ adb -s 1573273300008C8 logcat *:S python:D\n--------- beginning of main\n06-24 02:50:24.781 21748 21817 I python : Initializing Python for Android\n06-24 02:50:24.781 21748 21817 I python : Setting additional env vars from p4a_env_vars.txt\n06-24 02:50:24.781 21748 21817 I python : Changing directory to the one provided by ANDROID_ARGUMENT\n06-24 …Run Code Online (Sandbox Code Playgroud) 我正在使用KivyMD 0.102.0,它在运行 main.py 文件时给了我一个错误。
我收到以下错误。
Error: No module named 'kivymd.app'
Run Code Online (Sandbox Code Playgroud)
运行此示例代码时