Как отобразить текущую выбранную папку в графическом интерфейсе?

Добрый день,

Я использую 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. Как заставить его вернуть полный путь в записи?

  2. Как изменить "/" на "\"

  3. Как сделать так, чтобы приложение запоминало папку как начальный каталог при следующем запуске приложения?

Пожалуйста помоги!

1 ответ

Решение

Чтобы записать это в свой лейбл, вам нужно иметь ссылку на него.

несколько возможностей:

  1. создать класс для вашего графического интерфейса и использовать showdir или текстовая переменная, связанная с ним как переменная экземпляра
  2. передать ссылку на ваш звонок, чтобы иметь showdir имеется в наличии
  3. Глобальный showdir

почему этот заказ? наиболее наименее предпочтительным.

Если вы не знаете, как писать или читать из файла, начните с уроков по Python, прежде чем приступить к созданию GUI. Нет смысла "ломать голову над кодом, написанным кем-то другим", если вы не знаете, почему вы делаете определенные шаги так, как вы это делаете. Это похоже на вождение автомобиля, не зная, что такое движение.

Что касается вашего редактирования:

Ваш код работает сейчас, так как вы больше не обращаетесь к свойству напрямую, поэтому вы не используете немедленный доступ для записи к записи.

  • return dir_path полностью устарел.
  • вы не получаете папку как ваш os.path.dirname(indir) возвращает - согласно определению внутри документации путь родительского каталога. Если вы используете файл вместо директории, то имя каталога будет в порядке, если вы используете директорию, используйте os.path.abspath,
os.path.dirname(путь)¶

Вернуть каталог имя пути путь. Это первый элемент пары, возвращаемый путем передачи пути к функции split().
Другие вопросы по тегам