Как выбрать каталог (диалог) и распечатать выбранное директорие на GUI - PullRequest
0 голосов
/ 20 апреля 2020

Я создаю небольшой gui с кнопкой обзора, на которой пользователь должен щелкнуть, чтобы открыть диалоговое окно выбора каталога. После того, как пользователь выбрал каталог, я хочу отобразить выбранный путь на gui в виде простого текста.

Как мне это сделать? Если я добавлю

txt_path = tk.Label(master=root,textvariable=path)
txt_path.grid(row=1, column=0)

в функцию browse_button, текст с выбранным каталогом не появится, будет работать только печать.

Если я поставлю

txt_path = tk.Label(master=root,textvariable=path)
txt_path.grid(row=1, column=0)

за пределами функции browse_button появляется ошибка:

txt_path = tk.Label (master = root, textvariable = path) NameError: имя 'path' не определено

поскольку переменная пути еще не определена, является ли правильный способ сделать переменную пути глобальной? Мой код:

from tkinter import filedialog
import tkinter as tk

def browse_button():
    path = filedialog.askdirectory()
    if len(path) > 0:
        print('OK: ' + path)
        # txt_path = tk.Label(master=root,textvariable=path)
        # txt_path.grid(row=1, column=0)
    else:
        print('ERROR')


###########################################################
#  GUI
root = tk.Tk()
root.geometry("650x400")

btn_Browse = tk.Button(text="Browse", command=browse_button)
btn_Browse.grid(row=0, column=0)
txt_path = tk.Label(master=root,textvariable=path)
txt_path.grid(row=1, column=0)

root.mainloop()

1 Ответ

0 голосов
/ 20 апреля 2020

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

from tkinter import filedialog
import tkinter as tk


def browse_button():
    path = filedialog.askdirectory()
    if len(path) > 0:
        print('OK: ' + path)
        txt_path = tk.Label(master=root, text=path)
        txt_path.grid(row=1, column=0)
    else:
        print('ERROR')


###########################################################
#  GUI
root = tk.Tk()
root.geometry("650x400")

btn_Browse = tk.Button(text="Browse", command=browse_button)
btn_Browse.grid(row=0, column=0)

root.mainloop()

Я написал строки, которые вы добавили с комментариями, с небольшим изменением - я изменил атрибут textvariable на text метки txt_path.

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