Python Tkinter Просмотр файла - проблема

1

У меня возникают некоторые проблемы при отображении местоположения выбранного изображения. Есть ли причина, по которой он отображает <_io.TextIOWrapper name = вместе с mode='r'encoding ='cp1252>? Я просто хочу, чтобы он отображал местоположение изображения вместе с названием изображения, а не эти дополнительные вещи. Что-то, что я делаю, вызывает это? Пожалуйста, порекомендуйте.

def button(self):
    self.button = ttk.Button(self.labelFrame, text = "Upload Image", command = self.fileDialog)
    self.button.grid(column = 1, row = 1)     


def fileDialog(self):
    self.filename = filedialog.askopenfile(initialdir = "/", title = "Select a File", filetype = (("jpeg", "*.jpg"), ("All files", "*.")))
    self.label = ttk.Label(self.labelFrame, text = "")
    self.label.grid(column = 1, row = 2)
    self.label.configure(text = self.filename)

Изображение 174551

  • 1
    Похоже, вы используете getopenfile а не getopenfilename (или вариант «сохранить»). Пожалуйста, измените ваш вопрос, чтобы включить минимальный воспроизводимый пример, который иллюстрирует проблему. Этот пример не должен занимать более десятка строк или около того, макс.
  • 0
    Мне жаль, что я забыл включить фрагмент кода. Пожалуйста, смотрите модифицированный вопрос. @BryanOakley
Теги:
user-interface
tkinter

1 ответ

0

filedialog.askopenfile дает объект файла, а не имя файла.

Вы должны отобразить self.filename.name вместо self.filename


Полный рабочий пример

import tkinter as tk
from tkinter import filedialog

root = tk.Tk()

file_object = filedialog.askopenfile(title="Select file")
print('file_object:', file_object)
print('file_object.name:', file_object.name)
#data = file_object.read()

label = tk.Label(root, text=file_object.name)
label.pack()

root.mainloop()

Или используйте askopenfilename вместо askopenfile и вы получите имя файла.


Полный рабочий пример

import tkinter as tk
from tkinter import filedialog

root = tk.Tk()

filename = filedialog.askopenfilename(title="Select file")
print('filename:', filename)
#data = open(filename).read()

label = tk.Label(root, text=filename)
label.pack()

root.mainloop()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню