Как читать save.txt файл и установите для него значение label

#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()