Почему Киви не пишет в TextArea
Я пробовал разные решения, но никто не работает. Это моя последняя попытка.
Когда сценарий включается в первый раз, попробуйте вывести в консоли "porco", но не записать в text.result Label, почему??? Перейти непосредственно к последней записи метки для загрузки завершена
import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from pytube import YouTube
class InputLink(GridLayout):
def __init__(self, **kwargs):
super(InputLink, self).__init__(**kwargs)
self.rows = 4
self.add_widget(Label(text="Link Youtube:"))
self.link = TextInput(multiline=False)
self.add_widget(self.link)
self.result = Label(text="testo")
self.add_widget(self.result)
self.bottone1 = Button(text="Download")
self.bottone1.bind(on_press=self.click1)
self.add_widget(self.bottone1)
def click1(self,btn):
self.result.text = self.link.text
yt = ""
#print(yt.streams.filter(only_audio=True).all())
try:
yt = YouTube(self.link.text)
self.result.text = "Avvio il download di "+self.link.text#<--WHY??
print('porco')
except Exception as e:
self.result.text = "Errore 1"+str(e)
return
self.download(yt)
def download(self,yt):
try:
yt.streams.filter(subtype='mp4').first().download()
self.result.text = "Download completato!"
except Exception as e:
self.result.text = "Errore 2"+str(e)
class YoutubeApp(App):
def build(self):
return InputLink()
if __name__ == "__main__":
YoutubeApp().run()
1 ответ
Решение
Обновленный текст не отображался, поскольку он загружается в том же фрейме.
Решение
- Заменить все вхождения
yt
сself.yt
- замещать
self.download(yt)
сClock.schedule_once(self.download, 1)
- замещать
download(self, yt)
метод сdownload(self, dt)
отрывок
def click1(self, btn):
self.result.text = self.link.text
self.yt = ""
# print(yt.streams.filter(only_audio=True).all())
try:
self.yt = YouTube(self.link.text)
self.result.text = "Avvio il download di " + self.link.text # <--WHY??
print('porco')
except Exception as e:
self.result.text = "Errore 1" + str(e)
return
Clock.schedule_once(self.download, 1)
def download(self, dt):
try:
self.yt.streams.filter(subtype='mp4').first().download()
self.result.text = "Download completato!"
except Exception as e:
self.result.text = "Errore 2" + str(e)