AttributeError: объект 'builtin_function_or_method' не имеет атрибута 'get' - PullRequest
1 голос
/ 07 августа 2020

когда я пытаюсь запустить программу и нажимаю кнопку «Загрузить», которая предназначена для загрузки видео с YouTube, я всегда получаю:

    AttributeError: 'builtin_function_or_method' object has no attribute 'get'

, но я не уверен, почему, это мой полный код, в случае необходимости:

import tkinter as tk
import pytube
from tkinter import *
from pytube import YouTube

def handle_focus_in(_):
    e.delete(0, tk.END)
    e.config(fg='black')

def handle_focus_out(_):
    e.delete(0, tk.END)
    e.config(fg='grey')
    e.insert(0, "Input Youtube URL")

def handle_enter(txt):
    print(e.get())
    handle_focus_out('dummy')

def click():
    inp = input.get()
    yt = YouTube(inp)
    print(yt.streams.all())
    stream = yt.streams.first()
    stream.download()

root = tk.Tk()

b1 = Button(root, text="Download", fg="red", command=click)
b1.pack(side=BOTTOM)

e = tk.Entry(root, bg='white', width=30, fg='grey')
e.pack(side=TOP)

e.insert(0, "Input Youtube URL")

e.bind("<FocusIn>", handle_focus_in)
e.bind("<FocusOut>", handle_focus_out)
e.bind("<Return>", handle_enter)

root.title("Ayomide's Youtube Downloader")
root.configure(background="black")
root.mainloop()

1 Ответ

2 голосов
/ 07 августа 2020

Вы получаете эту ошибку, потому что input является встроенной функцией Python. Давайте посмотрим: https://www.w3schools.com/python/ref_func_input.asp

Кроме того, вы не определили переменную input.

Я проверил вашу реализацию, и я думаю, вы хотите получить YouTube ссылку из GUI и передать ее классу YouTube().

Вы должны изменить inp = input.get() на inp = e.get(), в этом случае переменная inp будет содержать URL-адрес YouTube из GUI.

Я тестировал его следующим методом:

def click():
    inp = e.get()
    print("YouTube({})".format(inp))

GUI:

GUI

Вывод в консоль (если я нажму кнопку Download):

>>> python3 test.py 
YouTube(https://www.youtube.com/watch?v=7tN1EoUumHU)
...