如何解决kivymd object .__ init __仅接受一个参数要初始化的实例
我正在尝试构建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,100)
color_active: (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应用程序的最佳方法。
解决方法
您在 self.file_manager 中写入了 const regex = /(?=(([01])\2{4}(?!\2)[01]))/g;
[
"00000100000100","00000111110111"
].forEach(s => console.log(Array.from(s.matchAll(regex),m => m[1])));
。它将是 self_path = self.select_path
。另外,我不知道 select_path = self.select_path
有什么问题,可能是一个错误。
所以你的功能将是:
preview=True
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。