#python #tkinter #save #pytube
#python #tkinter #Сохранить #pytube
Вопрос:
(Я создаю приложение с графическим интерфейсом с помощью tkinter и pytube, оно загрузит ваше видео с YouTube в ваш каталог.) Здравствуйте, я собираюсь создать собственное приложение на python, но это непросто. Я не могу найти решение. Я хочу, чтобы мое приложение сохраняло. Каждый раз, когда я выбираю каталог, он будет записывать в save.txt файл, но когда я запускаю приложение, я не знаю, как загрузить файл в ярлык, который показывает текущий каталог. Также я хочу изменить ytbvideo.download(path)
. Вместо path я хочу прочитать мой save.txt досье. В моем saves.txt файл — это всего лишь каталог. Например, в saves.txt теперь это C:/Python/VideoDownloader
так, так что если приложение читает save.txt , я думаю, это не должно быть проблемой. Это мой код, он работает нормально, так что единственная проблема в том, что я не знаю, что добавить. Это мой код:
import os
from tkinter import Text, Label, Tk, Entry, StringVar, Button
from tkinter import filedialog
import tkinter as tk
root= Tk()
root.geometry('600x400')
root.title('Youtube Video Downloader')
root.configure(bg='gray')
Label_1=Label(root,text="Youtube video downloader", font=("bold",20), bg='gray')
Label_1.place(x=150,y=10)
Label_2=Label(root, text="Paste the link here", font=(10), bg='gray')
Label_2.place(x=240, y=75)
mylink=StringVar()
pastelink=Entry(root, width=60, textvariable=mylink)
pastelink.place(x=140, y=100)
def chooseDir():
global path
path = filedialog.askdirectory(title="Choose a download directory")
tk.Label(root, text=path, bg='gray').place(x=240,y=300)
saves()
def downloadVideo():
videoLink=str(mylink.get())
ytbvideo=YouTube(videoLink).streams.filter(progressive=True, file_extension='mp4').order_by('resolution').desc().first()
ytbvideo.download(path)
def saves():
saves = open('data.txt', 'w')
saves.write(path)
def quitApp():
root.destroy()
Button(root,text="Download video", width=20, bg='black',fg="white", command=downloadVideo).place(x=240, y=130)
Button(root,text="Choose location", width=20, bg='black',fg="white", command=chooseDir).place(x=240, y=160)
Label_3=Label(root, text="Curent location: ", font=("bold"), bg='gray')
Label_3.place(x=250, y=245)
Label_3=Label(root, text="by yakubiq", font=("bold"), bg='gray')
Label_3.place(x=0, y=375)
Button(root,text="Quit", width=20, bg='black', fg='white', command=quitApp).place(x=445, y=370)
root.mainloop()
Ответ №1:
вам нужно будет открыть save.txt в режиме чтения, как в:
savesReader = open("data.txt", 'r')
Затем вы можете использовать savesReader.read() для чтения из «data.txt «досье.
Комментарии:
1. @JohnyPro да, но тогда я не могу редактировать этот файл каждый раз, когда меняю каталог
2. @JohnyPro могу ли я сделать это так?
def saves(): saves = open('data.txt', 'w') saves.write(path) saves = open('data.txt', 'r') data = saves.read()
3. о, хорошо, если вы хотите одновременно читать и записывать в файл, вы можете использовать
open("data.txt", 'w ')
вместоopen("data.txt", 'r')
4. @JohnyPro но все же это не работает, каталог не отображается при запуске приложения
def chooseDir(): global path path = filedialog.askdirectory(title="Choose a download directory") tk.Label(root, text=data, bg='gray').place(x=240,y=300) saves() def downloadVideo(): videoLink=str(mylink.get()) ytbvideo=YouTube(videoLink).streams.filter(progressive=True, file_extension='mp4').order_by('resolution').desc().first() ytbvideo.download(data) def saves(): saves = open('data.txt', 'w ') global data data = saves.read()
5. @JohnyPro это ошибка, когда я хочу выбрать каталог, но при запуске, когда он должен изменить метку с none на directory в data.txt , нет никакой ошибки.
Exception in Tkinter callback Traceback (most recent call last): File "C:UsersUserAppDataLocalProgramsPythonPython37libtkinter__init__.py", line 1702, in __call__ return self.func(*args) File "C:PythonVideoDownloaderVideoDownloader.py", line 36, in chooseDir tk.Label(root, text=data, bg='gray').place(x=240,y=300) NameError: name 'data' is not defined
Ответ №2:
просто сделайте это:
var=open('[file directory]', 'r')
myvar= var.readlines()
tklabel=Label(root, text=f"{myvar}", font=(10), bg='gray')
var.close()