GVKun编程网logo

Kivy/Python:缺少 1 个必需的位置参数(缺少一个必要的位置参数)

3

如果您想了解Kivy/Python:缺少1个必需的位置参数的相关知识,那么本文是一篇不可错过的文章,我们将对缺少一个必要的位置参数进行全面详尽的解释,并且为您提供关于(Kivy)如何在Kivy的画布上

如果您想了解Kivy/Python:缺少 1 个必需的位置参数的相关知识,那么本文是一篇不可错过的文章,我们将对缺少一个必要的位置参数进行全面详尽的解释,并且为您提供关于(Kivy) 如何在 Kivy 的画布上显示新内容?、buildozer, kivy/kivy System.err: java.lang.NullPointerException: uri、Catboost python 功能重要性缺少 1 个必需的位置参数:“值”、Kivy App在Android中崩溃,但在PC中不崩溃 Buildozer'KeyError:'kivy.garden.matplotlib'的有价值的信息。

本文目录一览:

Kivy/Python:缺少 1 个必需的位置参数(缺少一个必要的位置参数)

Kivy/Python:缺少 1 个必需的位置参数(缺少一个必要的位置参数)

如何解决Kivy/Python:缺少 1 个必需的位置参数

我对类/类方法及其工作方式不太熟悉,而且我知道我的代码很糟糕!我想涉足 UI 的世界,所以我想使用我用 Python 编写的一个简单函数,看看我是否可以用它创建一个应用程序。 (编辑:如果今天不是星期一,脚本会生成一个“:(”,如果今天是星期一,则生成一个“:)”。)(双重编辑:这是我的第一篇文章,我为我的无知而道歉:编码和堆栈溢出格式。)我们有:

  1. #!/usr/bin/env python
  2. from kivy.app import App
  3. from kivy.uix.label import Label
  4. import datetime
  5. from datetime import date
  6. import calendar
  7. today = date.today().strftime(''%Y-%d-%m'')
  8. def findDay(self,today):
  9. day = datetime.datetime.strptime(today,''%Y-%d-%m'').weekday()
  10. y = (calendar.day_name[day])
  11. if y == ''Monday'':
  12. x = '':)''
  13. return x
  14. else:
  15. x = '':(''
  16. return x
  17. print(x)
  18. class MyApp(App):
  19. def build(self):
  20. today = date.today().strftime(''%Y-%d-%m'')
  21. z = findDay(today)
  22. return Label(z)
  23. if __name__ == "__main__":
  24. MyApp().run()

出现错误:

  1. Traceback (most recent call last):
  2. File "main.py",line 30,in <module>
  3. MyApp().run()
  4. File "/Users/myusernamehere/opt/anaconda3/lib/python3.7/site-packages/kivy/app.py",line 829,in run
  5. root = self.build()
  6. File "main.py",line 26,in build
  7. z = findDay(today)
  8. TypeError: findDay() missing 1 required positional argument: ''today''

我知道这个错误是由于类对象的不正确实例化引起的……但是根据我对“今天”的定义,我不确定这在我给定的上下文中意味着什么! (除非它与“自我”有关?)

解决方法

我知道这个错误是由于类对象的不正确实例化引起的……但是根据我对“今天”的定义,我不确定这在我给定的上下文中意味着什么! (除非它与“自我”有关?)

findDay 只是一个函数,与你的类无关。

正如您定义的那样,它需要两个参数,您将它们命名为 selftoday。当你调用它时,你只传递一个参数(它绑定到名称 self,第一个参数),因此你会得到错误,你没有传递 1 个必需的位置参数,名为 {{1 }}。

由于该函数不依赖于与您的类相关的任何内容,我猜您的意思是它只是一个普通函数,您应该删除 today 参数,因为它没有任何用途。

,

只有在编写实例方法(在类中)时才需要 self。 对于普通函数,签名中不需要 self

这应该可以正常工作:

  1. self
,

函数没有状态,因此它们不需要 self 作为参数。

  1. #!/usr/bin/env python
  2. from kivy.app import App
  3. from kivy.uix.label import Label
  4. import datetime
  5. from datetime import date
  6. import calendar
  7. today = date.today().strftime(''%Y-%d-%m'')
  8. def findDay(today): # Changed here
  9. day = datetime.datetime.strptime(today,''%Y-%d-%m'').weekday()
  10. y = (calendar.day_name[day])
  11. if y == ''Monday'':
  12. x = '':)''
  13. return x
  14. else:
  15. x = '':(''
  16. return x
  17. print(x)
  18. class MyApp(App):
  19. def build(self):
  20. today = date.today().strftime(''%Y-%d-%m'')
  21. z = findDay(today)
  22. return Label(z)
  23. if __name__ == "__main__":
  24. MyApp().run()

(Kivy) 如何在 Kivy 的画布上显示新内容?

(Kivy) 如何在 Kivy 的画布上显示新内容?

如何解决(Kivy) 如何在 Kivy 的画布上显示新内容?

这应该是一个非常简单的修复。我是 Kivy 的新手。我试图在按下按钮时清除画布,然后显示一个新的小部件以基本上移动到另一个页面。当我运行它并按下按钮时,画布被清除了,但我从 IntroPage 中什么也没得到。

Python 脚本:

  1. import kivy
  2. kivy.require(''2.0.0'')
  3. from kivy.app import App
  4. from kivy.uix.label import Label
  5. from kivy.uix.gridlayout import GridLayout
  6. from kivy.uix.button import Button
  7. from kivy.uix.image import Image
  8. from kivy.uix.widget import Widget
  9. from kivy.properties import ObjectProperty
  10. class ABT(App):
  11. def build(self):
  12. return WelcomePage()
  13. class WelcomePage(Widget):
  14. def btn(self):
  15. self.canvas.clear()
  16. print(''pressed'')
  17. return IntroPage()
  18. class IntroPage(Widget):
  19. def __init__(self):
  20. pass
  21. if __name__ == ''__main__'':
  22. ABT().run()

KV 文件:

  1. <WelcomePage>
  2. canvas.before:
  3. Color:
  4. rgba: (.43,.51,.92,.26)
  5. Rectangle:
  6. pos: self.pos
  7. size: self.size
  8. GridLayout:
  9. cols:1
  10. size: root.width,root.height
  11. Image:
  12. source: ''abt1t.png''
  13. size_hint: (1,.8)
  14. Button:
  15. text:"begin"
  16. background_color: (.43,.26)
  17. size_hint: (1,.2)
  18. on_press: root.btn()
  19. <IntroPage>
  20. GridLayout:
  21. cols:1
  22. Label:
  23. text:"This won''t show up!"

解决方法

btn 返回 IntroPage 不起作用,因为 btn 不是构建方法。

实现多个页面的最佳方式可能是使用ScreenManager:

  1. from kivy.uix.screenmanager import ScreenManager,Screen
  2. class ABT(App):
  3. def build(self):
  4. sm = ScreenManager()
  5. sm.add_widget(WelcomePage(name="welcome"))
  6. sm.add_widget(IntroPage(name="intro"))
  7. return sm
  8. class WelcomePage(Screen):
  9. def btn(self):
  10. print(''pressed'')
  11. self.manager.current = "intro"
  12. class IntroPage(Screen):
  13. def __init__(self):
  14. pass

buildozer, kivy/kivy System.err: java.lang.NullPointerException: uri

buildozer, kivy/kivy System.err: java.lang.NullPointerException: uri

如何解决buildozer, kivy/kivy System.err: java.lang.NullPointerException: uri

在编译我的 kivy/kivymd 项目时,我收到此错误:

System.err:java.lang.NullPointerException:uri。 在我的 logcat 文件 (log.txt) 中。 我真的不知道我的代码有什么问题。

这是我的代码,只是一个 Hello World 屏幕。

#=========main.kv============
<Body>:
    MDLabel:
        text: "Hello World !"
        halign: "center"
#==========main.py================

from kivymd.app import MDApp
from kivymd.uix.Boxlayout import MDBoxLayout

class Body(MDBoxLayout):
    pass

class Main(MDApp):
    def build(self):
        return Body()

if __name__=="__main__":
    Main().run()

Catboost python 功能重要性缺少 1 个必需的位置参数:“值”

Catboost python 功能重要性缺少 1 个必需的位置参数:“值”

在我删除以下行中的大括号后它起作用了

abc = model.get_feature_importance(type=catBoost.EFstrType.FeatureImportance,prettified=True,thread_count=-1,verbose=False)

Kivy App在Android中崩溃,但在PC中不崩溃 Buildozer'KeyError:'kivy.garden.matplotlib'

Kivy App在Android中崩溃,但在PC中不崩溃 Buildozer'KeyError:'kivy.garden.matplotlib'

如何解决Kivy App在Android中崩溃,但在PC中不崩溃 Buildozer''KeyError:''kivy.garden.matplotlib''?

版本:

  • Python:3.8.5
  • 操作系统:manjaro 20.04
  • Buildozer:1.2.0
  • 基辅:1.11.1

说明:

我想使用.py文件中的命令“从kivy.garden.matplotlib.backend_kivyagg import figureCanvasKivyAgg”来绘制matplotlib的图形。此命令在PC上有效,但在Android上无效。

规范文件:

    requirements: python3,kivy==2.0.0rc3,https://github.com/kivymd/KivyMD/archive/master.zip,sdl2_ttf==2.0.15,matplotlib

logcat | grep python

    09-14 11:32:56.530 17786 18857 I python  :  KeyError: ''kivy.garden.matplotlib''
    09-14 11:32:56.531 17786 18857 I python  : Python for android ended.

解决方法

正如错误所指出的,您没有花园的要求。它可以在您的PC上运行,因为您可能这样做了:

garden install matplotlib

在您的PC上的某个点上,因此您拥有了花园的花朵,但这仅是问题的一半。事实是,不建议使用kivy garden,因此您应该停止使用它,现在要在您的应用中使用花园花,您应该这样做:

garden install --app some_flower

这是因为不建议使用pip软件包来使用花园花卉,但并非所有花卉都已移至pypi,因此,如果尚未移动所需的软件包,请使用上面的命令,否则,只需使用pip和ialso正常安装即可在您的需求中添加它。 您遇到的另一个主要问题是 MATPLOTLIB在ANDROID上无法正常工作这是一个主要问题,已经讨论了一段时间,但AFAIK目前尚无人在解决此问题,如果您只需要绘制一个虽然有一个简单的图,但是有一个名为graph的花园程序包,请使用以下命令安装它:

python -m pip install https://github.com/kivy-garden/graph/archive/master.zip

然后在您的应用程序中使用它,这只是python,因此它可以在android上运行,并由我尝试过。如果您想知道如何使用它,请参见README

上的示例

然后您可以将该URL包含在buildozer中的需求中(就像您对KivyMD所做的一样

今天的关于Kivy/Python:缺少 1 个必需的位置参数缺少一个必要的位置参数的分享已经结束,谢谢您的关注,如果想了解更多关于(Kivy) 如何在 Kivy 的画布上显示新内容?、buildozer, kivy/kivy System.err: java.lang.NullPointerException: uri、Catboost python 功能重要性缺少 1 个必需的位置参数:“值”、Kivy App在Android中崩溃,但在PC中不崩溃 Buildozer'KeyError:'kivy.garden.matplotlib'的相关知识,请在本站进行查询。

本文标签: