Как показать путь к файлу с помощью кнопки «Обзор» в Python / Tkinter
Работая с Python и Tkinter, я пытаюсь найти способ показать путь file_path рядом с кнопкой «Обзор», но не смог этого сделать.
Вот мой код:
- прокрутка python tkinter и проблемы с виджетами
- Значение «AttributeError: объект NoneType не имеет атрибута tk»?
- не может установить цвет фона ttk python os x, используя стили
- Перемещение и масштабирование холста tkinter с помощью мыши
- python Tkinter, проверьте, был ли root уничтожен?
import os from tkFileDialog import askopenfilename from Tkinter import * content = '' file_path = '' #~~~~ FUNCTIONS~~~~ def open_file(): global content global file_path filename = askopenfilename() infile = open(filename, 'r') content = infile.read() file_path = os.path.dirname(filename) return content def process_file(content): print content #~~~~~~~~~~~~~~~~~~~ #~~~~~~ GUI ~~~~~~~~ root = Tk() root.title('Urdu Mehfil Ginti Converter') root.geometry("598x120+250+100") mf = Frame(root) mf.pack() f1 = Frame(mf, width=600, height=250) f1.pack(fill=X) f2 = Frame(mf, width=600, height=250) f2.pack() file_path = StringVar Label(f1,text="Select Your File (Only txt files)").grid(row=0, column=0, sticky='e') Entry(f1, width=50, textvariable=file_path).grid(row=0,column=1,padx=2,pady=2,sticky='we',columnspan=25) Button(f1, text="Browse", command=open_file).grid(row=0, column=27, sticky='ew', padx=8, pady=4) Button(f2, text="Process Now", width=32, command=lambda: process_file(content)).grid(sticky='ew', padx=10, pady=10) root.mainloop() #~~~~~~~~~~~~~~~~~~~
Просьба указать мне, как я могу показать путь к файлу вместе с кнопкой «Обзор» после выбора пользователем файла, как показано на этом изображении .
Заранее спасибо!
2 Solutions collect form web for “Как показать путь к файлу с помощью кнопки «Обзор» в Python / Tkinter”
Сначала измените эту строку:
Entry(f1, width=50, textvariable=file_path).grid(row=0,column=1,padx=2,pady=2,sticky='we',columnspan=25)
к этому:
entry = Entry(f1, width=50, textvariable=file_path) entry.grid(row=0,column=1,padx=2,pady=2,sticky='we',columnspan=25)
Затем в функции open_file()
добавьте эти две строки непосредственно перед return
:
entry.delete(0, END) entry.insert(0, file_path)
Объяснение : Во-первых, мы даем записи имя, чтобы его можно было изменить. Затем в функции open_file()
мы open_file()
его и добавляем текст для пути к файлу.
Вот diff, который исправляет вместо этого file_path
, то есть использование StringVar()
:
--- old.py 2016-08-10 18:22:16.203016340 +0200 +++ new.py 2016-08-10 18:24:59.115328029 +0200 @@ -4,7 +4,6 @@ content = '' -file_path = '' #~~~~ FUNCTIONS~~~~ @@ -16,7 +15,7 @@ filename = askopenfilename() infile = open(filename, 'r') content = infile.read() - file_path = os.path.dirname(filename) + file_path.set(os.path.dirname(filename)) return content def process_file(content): @@ -40,7 +39,7 @@ f2 = Frame(mf, width=600, height=250) f2.pack() -file_path = StringVar +file_path = StringVar(root) Label(f1,text="Select Your File (Only txt files)").grid(row=0, column=0, sticky='e')
- Что случилось с этой программой python, работающей на .csv?
- Быстрый метод для поиска строки в большом текстовом файле с помощью python