Как отобразить текущую выбранную папку в графическом интерфейсе?
Добрый день,
Я использую tkinter filedialog, чтобы выбрать папку и отобразить ее в записи в графическом интерфейсе?
Вот мой код до сих пор:
import os
from tkinter import *
from tkinter import filedialog
dir_path = ''
def inPut():
indir = filedialog.askdirectory(parent=root,initialdir="/",title='Input Folder')
indir = str(indir)
dir_path = os.path.dirname(indir)
entry.delete(0, END)
entry.insert(0, dir_path)
return dir_path
root = Tk()
root.geometry("640x240")
root.title("Settings")
frametop = Frame(root)
framebottom = Frame(root)
frameright = Frame(framebottom)
text = Label(frametop, text="Input Folder").grid(row=5, column=2)
entry = Entry(frametop, width=50, text=dir_path)
entry.grid(row=5,column=4,padx=2,pady=2,sticky='we',columnspan=20)
ButtonA = Button(frametop, text="Change", command=inPut).grid(row=5, column=28)
ButtonB = Button(frameright, text="OK").grid(row=5, column=20, padx=10)
frametop.pack(side=TOP, fill=BOTH, expand=1)
framebottom.pack(side=BOTTOM, fill=BOTH, expand=1)
frameright.pack(side=RIGHT)
root.mainloop()
В настоящее время он возвращает только "D:/"
Как заставить его вернуть полный путь в записи?
Как изменить "/" на "\"
Как сделать так, чтобы приложение запоминало папку как начальный каталог при следующем запуске приложения?
Пожалуйста помоги!
1 ответ
Чтобы записать это в свой лейбл, вам нужно иметь ссылку на него.
несколько возможностей:
- создать класс для вашего графического интерфейса и использовать
showdir
или текстовая переменная, связанная с ним как переменная экземпляра - передать ссылку на ваш звонок, чтобы иметь
showdir
имеется в наличии - Глобальный
showdir
почему этот заказ? наиболее наименее предпочтительным.
Если вы не знаете, как писать или читать из файла, начните с уроков по Python, прежде чем приступить к созданию GUI. Нет смысла "ломать голову над кодом, написанным кем-то другим", если вы не знаете, почему вы делаете определенные шаги так, как вы это делаете. Это похоже на вождение автомобиля, не зная, что такое движение.
Что касается вашего редактирования:
Ваш код работает сейчас, так как вы больше не обращаетесь к свойству напрямую, поэтому вы не используете немедленный доступ для записи к записи.
return dir_path
полностью устарел.- вы не получаете папку как ваш
os.path.dirname(indir)
возвращает - согласно определению внутри документации путь родительского каталога. Если вы используете файл вместо директории, то имя каталога будет в порядке, если вы используете директорию, используйтеos.path.abspath
,
os.path.dirname(путь)¶
Вернуть каталог имя пути путь. Это первый элемент пары, возвращаемый путем передачи пути к функции split().