Как ввести содержимое файла в текстовый виджет в Tkinter? - PullRequest
0 голосов
/ 31 августа 2018

Несмотря на то, что вопросы кажутся мне слишком простыми, чтобы я не мог найти решение иначе, я не мог понять, где или в чем проблема.

Как показывает вопрос, я хотел бы иметь возможность открыть каталог, выбрать файл и ввести содержимое этого файла в текстовый виджет, где я хочу его редактировать. Как и в любом приложении с кнопкой «Открыть».

import tkinter as tk
from tkinter import filedialog

def open():
    filename = filedialog.askopenfilename(initialdir="C:/",
                                      title="Select File",
                                      filetypes=(("Text File", "*.txt"),("All Files","*.*")))

with open(filename, 'r') as f:
    pathlabel.insert("1.0", f.readlines())
    #search_f = f.readlines()
    #for line in search_f:
        #pathlabel.insert("1.0", f.readlines)
        #pathlabel.insert("1.0", "{}",format(line))


#pathlabel.config(text=filename)
#pathlabel.insert("1.0", filename)

root = tk.Tk()

tnb = tk.Menu(root)

root.config(menu=tnb)

    # *******tnb_file*******

tnb_file = tk.Menu(tnb, tearoff=0)
tnb.add_cascade(label="File", menu=tnb_file)
tnb_file.add_command(label="Open ...", command=open)
tnb_file.add_separator()
tnb_file.add_command(label="Exit", command=root.destroy)

pathlabel = tk.Text(root)
pathlabel.pack()

tk.mainloop()

Функция 'open ()' сначала создает диалоговое окно файла, которое работает нормально. Однако вторая часть, где файл должен быть прочитан, а содержимое введено в виджет текста (Pathlabel), где я хочу иметь возможность его редактировать, не работает.

Закомментированная часть в коде - мои разные попытки.

Где я не прав?

1 Ответ

0 голосов
/ 03 октября 2018

Просто чтобы официально и четко ответить на мой вопрос, основываясь на полезном комментарии @ jasonharper.

Код должен быть:

def file_open():
    filename = filedialog.askopenfilename(initialdir="C:/",
                                  title="Select File",
                                  filetypes=(("Text File", "*.txt"),("All Files","*.*")))

    with open(filename, 'r') as f:
        pathlabel.insert("1.0", f.read())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...