получение каталога, в котором был сохранен файл (приглашение tkinter filesave) - PullRequest
0 голосов
/ 29 мая 2018

Я использую tkinter для создания небольшого графического интерфейса на python, часть которого заключается в том, чтобы спросить пользователя, где сохранить файл.Вот мой код

from tkinter import *
import tkinter.filedialog as tf
import tkinter
import time

fileName = ""
def save():
    myFormats = [
    ('Text File','*.txt')
    ]
    root = tkinter.Tk()
    q = tf.asksaveasfilename(parent=root,filetypes=myFormats ,title="Save the image as...")
    print(type(q))
    fileName = q
    print(fileName)
    if len(fileName ) > 0:
        print ("Now saving under %s" % fileName)


master = Tk()
Button(master, text='Save file', command=save).grid(row=3, column=1, sticky=W, pady=4)
print(fileName)

mainloop( )
print(fileName)

print(fileName) внутри save(), печатает правильный путь, но тот же оператор в конце кода просто дает , к которому он был инициализированв начале.Я ломал голову, пытаясь понять, почему это происходит, и нашел способ это исправить.Любая помощь была бы замечательной!

Интересно, это как-то связано с изменчивыми переменными

Заранее спасибо!

1 Ответ

0 голосов
/ 29 мая 2018

Переменная fileName внутри save отличается от переменной fileName в глобальном пространстве имен из-за правил области видимости.Если вы хотите сослаться на глобальную переменную, используйте ключевое слово global:

def save():
    myFormats = [('Text File','*.txt')]
    root = tkinter.Tk()
    q = tf.asksaveasfilename(parent=root,
            filetypes=myFormats,
            title="Save the image as...")
    global fileName
    fileName = q
...