class Video:
def __init__(self):
self.v1 = StringVar()
self.entry1 = Entry(root, textvariable=v1)
self.entry1.pack()
self.downloadUrl = v1.get()
def downloadVideo(self):
ydl_opts = {}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
self.ydl.download([self.downloadUrl])
menu = Menu(root)
root.config(menu=menu)
menuOne = Menu(menu, tearoff=0)
menu.add_cascade(label='Magrobebi', menu=menuOne)
menuOne.add_command(label='Download Video', command=Video.downloadVideo)
メニューにビデオをダウンロードするボタンを作成しようとしています。その downloadUrl はグローバル変数ではないため、渡すのに問題がありました。コマンド自体をクラスに入れることはできません。なぜなら、そのように作成されることさえないからです。現在、「TypeError: downloadVideo() missing 1 required positionar argument: 'self'」が発生しているエラーです。これで別のクラスから関数を呼び出すことができません。これを回避するにはどうすればよいですか? ユーザーがリンクを入力してダウンロードできるエントリを作成するボタンが欲しいだけです。
を参照することself
が問題である場合は、次のようにクラスの外部にコードを追加できます。
from tkinter import *
import youtube_dl
root = Tk()
v1 = StringVar()
entry1 = Entry(root, textvariable=v1)
entry1.pack()
def downloadVideo():
downloadUrl = v1.get()
ydl_opts = {}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(downloadUrl)
menu = Menu(root)
root.config(menu=menu)
menuOne = Menu(menu, tearoff=0)
menu.add_cascade(label='Magrobebi', menu=menuOne)
menuOne.add_command(label='Download Video', command=downloadVideo)
root.mainloop()
これにより、ボタンを押すとビデオをダウンロードするオプションが表示されるウィンドウと、その下に入力ボックスが表示されます。
編集: asdownloadUrl = v1.get()
の呼び出しに必要なものは、すぐに内部の文字列downloadVideo()
を.get()
取得しますStringVar()
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加