Tkinter: проблема, если мне нужно распечатать путь из asksaveasfile - PullRequest
0 голосов
/ 09 мая 2020

У меня есть этот код:

from tkinter import filedialog

class Home():
    def init(self):

     self.bu = Button(self, text="Save")
     self.bu.grid(row=1, columnspan=2, stick="w", pady=30)
     self.bu.config(command=self.save_result)

    def save(self):
        """Save result"""
        f = filedialog.asksaveasfile(initialfile="save.txt", defaultextension=".txt")

        print(f)

Результат:

<_io.TextIOWrapper name='C:/Users/JOHN/Desktop/save.txt' mode='w' encoding='cp1252'>

Process finished with exit code 0

Мне нужно напечатать только путь "C:/Users/JOHN/Desktop/save.txt".

Ответы [ 2 ]

2 голосов
/ 09 мая 2020

нахожу ответ:

from tkinter import filedialog

class Home():
    def init(self):

     self.bu = Button(self, text="Save")
     self.bu.grid(row=1, columnspan=2, stick="w", pady=30)
     self.bu.config(command=self.save_result)

    def save(self):
        """Save result"""
        f = filedialog.asksaveasfile(initialfile="save.txt", defaultextension=".txt")

        print(f.name)
1 голос
/ 09 мая 2020

Вероятно, вы ищете filedialog.asksaveasfilename(). Это возвращает имя, а не открытый дескриптор файлового объекта. Затем вам придется открыть файл самостоятельно (в любом случае это лучшая идея, поскольку обычно вы не хотите, чтобы ручки перемещались по нему).

def save(self):
    filename = filedialog.asksaveasfilename()
    print(filename)
    with open(filename, "wb") as file:
        file.write(self.data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...