Tkinter python filedialog.askopenfilename - PullRequest
0 голосов
/ 18 мая 2018

Я не уверен, что я делаю неправильно в моем коде (ниже).Я пытаюсь получить функцию, которая будет работать, а также вернуть результат в переменной у.Идея состоит в том, чтобы пользователь щелкнул по кнопке выбора файла, которая откроет диалоговое окно, а затем, как только пользователь выберет файл, сохранит путь к файлу в переменной y, чтобы я мог использовать его в другом месте моего кода

Любая помощь будет оценена

from tkinter import Tk, Button, filedialog, Label
root = Tk()

root.title("test")
# Create a button with a custom callback
def openfiledialog():
 global y
 y = filedialog.askopenfilename(initialdir = "/",title = "Select f . 
 ile",filetypes = (("text file","*.txt"),("all files","*.*")))
 return y

print(y)

file_button = Button(root, text='Select File', command=openfiledialog)
file_button.pack()

exit_button = Button(root, text='Exit Program', command=root.destroy)
exit_button.pack()
w = Label(root, text='\n'"Step 1: Make sure the URL's in file are 
properly formatted, one URL per line"'\n''\n'
                  "Step 2: Select file"'\n''\n'
                 "Step 3: click run")
w.pack()


root.mainloop()

1 Ответ

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

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

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

Когда у меня есть известная глобальная переменная, я сначала определяю ее перед чем-либо.

Ваш оператор print(y) не работает как выдумаю, что это так.Он запускается только один раз в начале вашей программы, и в данный момент он запускается y не равно ничему.

Вам необходимо переместить оператор print в функцию.

Обновление: я добавил кнопку, чтобы помочь с вашим комментарием ниже.Эта кнопка напечатает текущее сохраненное значение y.

Приведенный ниже код является переделкой вашего кода.

from tkinter import Tk, Button, filedialog, Label


root = Tk()
y = ""
root.title("test")

def openfiledialog():
    global y
    y = filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("text file","*.txt"),("all files","*.*")))

def check_path():
    global y
    print(y)

file_button = Button(root, text='Select File', command=openfiledialog)
file_button.pack()

exit_button = Button(root, text='Exit Program', command=root.destroy)
exit_button.pack()
w = Label(root, text="\nStep 1: Make sure the URL's in file are properly formatted, one URL per line\n\nStep 2: Select file\n\nStep 3: click run")
w.pack()

Button(root, text="Print current saved path", command = check_path).pack()


root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...