【发布时间】:2021-01-06 07:19:18
【问题描述】:
我正在尝试构建一个 youtube 视频下载器,但我遇到了一个奇怪的错误,我不知道怎么做?我认为我的代码看起来不错,但有问题,我会尝试但我无法弄清楚!
请帮帮我-
错误
Traceback (most recent call last):
File "/home/rohit/Desktop/Youtube_downloader/main.py", line 84, in <module>
Itube().run()
File "/home/rohit/Desktop/Youtube_downloader/main.py", line 38, in __init__
self.file_manager = MDFileManager(
File "/home/rohit/Desktop/Youtube_downloader/env/lib/python3.8/site-packages/kivymd/uix/filemanager.py", line 403, in __init__
super().__init__(**kwargs)
File "/home/rohit/Desktop/Youtube_downloader/env/lib/python3.8/site-packages/kivymd/theming.py", line 907, in __init__
super().__init__(**kwargs)
File "/home/rohit/Desktop/Youtube_downloader/env/lib/python3.8/site-packages/kivy/uix/floatlayout.py", line 65, in __init__
super(FloatLayout, self).__init__(**kwargs)
File "/home/rohit/Desktop/Youtube_downloader/env/lib/python3.8/site-packages/kivy/uix/layout.py", line 76, in __init__
super(Layout, self).__init__(**kwargs)
File "/home/rohit/Desktop/Youtube_downloader/env/lib/python3.8/site-packages/kivymd/uix/behaviors/backgroundcolorbehavior.py", line 150, in __init__
super().__init__(**kwargs)
File "/home/rohit/Desktop/Youtube_downloader/env/lib/python3.8/site-packages/kivy/uix/widget.py", line 350, in __init__
super(Widget, self).__init__(**kwargs)
File "kivy/_event.pyx", line 245, in kivy._event.EventDispatcher.__init__
TypeError: object.__init__() takes exactly one argument (the instance to initialize)
main.py
from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.core.window import Window
from kivymd.uix.filemanager import MDFileManager
from kivymd.toast import toast
from youtube_dl import kv
Window.size = (450, 740)
class HomeScreen(Screen):
pass
class SigninScreen(Screen):
pass
sm = ScreenManager()
sm.add_widget(HomeScreen(name='homescreen'))
sm.add_widget(SigninScreen(name='signinscreen'))
class Itube(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
Window.bind(on_keyboard=self.events)
self.manager_open = False
self.file_manager = MDFileManager(
exit_manager = self.exit_manager,
self_path = self.select_path,
preview = True,
)
def build(self):
return Builder.load_string(kv)
def file_manager_open(self):
self.file_manager.show('/') # output manager to the screen
self.manager_open = True
def select_path(self, path):
'''It will be called when you click on the file name
or the catalog selection button.
:type path: str;
:param path: path to the selected directory or file;
'''
self.exit_manager()
toast(path)
def exit_manager(self, *args):
'''Called when the user reaches the root of the directory tree.'''
self.manager_open = False
self.file_manager.close()
def events(self, instance, keyboard, keycode, text, modifiers):
'''Called when buttons are pressed on the mobile device.'''
if keyboard in (1001, 27):
if self.manager_open:
self.file_manager.back()
return True
if __name__ == "__main__":
Itube().run()
youtube_dl.py
kv = """
ScreenManager:
HomeScreen:
SigninScreen:
<HomeScreen>:
name: 'homescreen'
MDBoxLayout:
orientation: 'vertical'
spacing: 20
padding: 40
MDTextFieldRound:
hint_text: 'Url'
multline: False
normal_color: (1, 1, 1, 100)
color_active: (232/255, 232/255, 232/255, 600)
MDBoxLayout:
orientation: 'horizontal'
adaptive_size: True
spacing: 22
pos_hint: {'center_x': 0.5, 'center_y': .99}
MDToolbar:
title: 'FileManager'
left_action_items: [['menu', lambda x: None]]
elevation: 10
MDRaisedButton:
text: 'Import from computer'
icon: "folder"
on_release: app.file_manager_open()
MDRaisedButton:
text: 'Import from itube cloud'
<SigninScreen>:
name: 'signinscreen'
"""
或者您能否解释一下构建大型 kivymd 应用程序的最佳方式。
【问题讨论】:
-
尝试一次将你的问题缩小到一个单一的事情,而不是你的三个不相关的问题加上非常广泛的询问。此外,如果您有错误,请发布完整的内容 - 您仅发布了少量文本,其中不包含任何旨在帮助识别问题的上下文信息。最后,尝试提供一个更简单的示例,这里的大部分代码都不太可能引发错误,因此只会让读者更难识别您的问题。
-
至于错误,它的意思是你向一个类传递了一个意想不到的参数,并且这个参数最终被传递到超类链上,直到它到达
object.__init__。因此,您应该寻找传递不存在的参数的地方,例如对于exit_manager = self.exit_manager,行,exit_manager实际上是一个有效的参数? -
如果我删除
self.exit_manager,我得到exit_manager = exit_manager, NameError: name 'exit_manager' is not defined错误。 -
exit_manager只是一个示例,您需要查找我描述的错误类型。 -
另外,您没有在此处粘贴的错误的附加内容可能有一些关于什么对象实例化是问题的线索。
标签: python python-3.x kivy kivymd