Получить имя файла в Tkinter и вывести его имя
программа должна создавать окно, в нем по центру кнопка, при нажатии на нее открывается окно выбора файла, и после выбора название файла должно быть написано внизу под кнопкой. ни как не могу сделат ьпоследнюю часть, название выводит только в консоли, попытка вывести filename из функции приводит к ошибке.
import tkinter as tk
from tkinter import filedialog
from tkinter.constants import CENTER
from tkinter.filedialog import askopenfilename
def UploadAction(event=None):
filename = filedialog.askopenfilename()
print('Selected:', filename)
root= tk.Tk()
canvas1 = tk.Canvas(root, width = 300, height = 300)
canvas1.pack()
button1 = tk.Button(text='Click Me',command=UploadAction, bg='brown',fg='white')
canvas1.create_window(150, 150, window=button1)
button1.place (relx = 0.5, rely = 0.5, anchor=CENTER)
canvas1.create_text(relx = 0.5, rely = 0.7, anchor=CENTER, text= filename, fill="black", font=('Helvetica 15 bold'))
root.mainloop()
Ответы (1 шт):
Автор решения: whatgenius
→ Ссылка
Вы сейчас выводите результат в консоль, потому что print() выводит в консоль.
Чтобы вывести результат под кнопкой, вам нужна область под кнопкой, в которую вы будете это делать (посмотрите какие есть варианты в tkinter'е и выберите наиболее подходящий).
Вот пример, но с выводом результата в button1 из вашего кода:
def UploadAction(event=None):
filename = filedialog.askopenfilename()
button1['text'] = f'Selected: {filename}'
if name == '__main__':
root= tk.Tk()
canvas1 = tk.Canvas(root, width = 300, height = 300)
canvas1.pack()
button1 = tk.Button(text='Click Me',command=UploadAction, bg='brown',fg='white')
canvas1.create_window(150, 150, window=button1)
button1.place (relx = 0.5, rely = 0.5, anchor=CENTER)
canvas1.create_text(relx = 0.5, rely = 0.7, anchor=CENTER, text= filename,
fill="black", font=('Helvetica 15 bold'))
root.mainloop()