Определение списка файлов с использованием Tkinter для использования в анализе.Трудно получить доступ к переменным по всему миру.(Python 3) - PullRequest
0 голосов
/ 08 февраля 2019

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

Я работаю над графическим интерфейсом, используя tkinter, который предложит мне выбрать набор файлов, которые будут использоваться для некоторого анализа.Я хочу сохранить эти файлы в списке, к которому я могу обратиться позже.Есть два обязательных файла, файл DBC и файл ASC.У меня проблемы с возможностью ссылки на файл (ы) вне функций, которые я определил.Я попытался определить ее как глобальную переменную (которую я прочитал не рекомендуется, так как это может привести к проблемам в будущем).Я получаю сообщение об ошибке, в котором говорится, что dbfiles или ascfiles не определены при попытке печати.Ниже приведено то, что я написал до сих пор:

import tkinter as tk
from tkinter import messagebox
from tkinter import filedialog

root = tk.Tk()
root.geometry("500x700")

def dbbutton():
    dbfiles = filedialog.askopenfilenames(parent=root, title='Select .DBC File(s)')
    dbfiles = root.tk.splitlist(dbfiles)
    for file1 in dbfiles:
        L1.insert(tk.END, file1)
    return dbfiles


def ascbutton():
    ascfiles = filedialog.askopenfilenames(parent=root, title='Select .ASC File(s)')
    ascfiles = root.tk.splitlist(ascfiles)
    for file2 in ascfiles:
        L2.insert(tk.END, file2)
    return ascfiles


b1 = tk.Button (root, text= "Select Database File(s)", command = dbbutton)
b1.pack()
L1 = tk.Listbox(root, selectmode = "multiple", height = 10, width = 80)
L1.pack()

b2 = tk.Button (root, text = "Select ASC File(s)", command = ascbutton)
b2.pack()
L2 = tk.Listbox(root, selectmode = "multiple", height = 10, width = 80 )
L2.pack()

root.mainloop()

Какой самый эффективный способ для меня ссылаться на эти файлы вне функций?

1 Ответ

0 голосов
/ 08 февраля 2019

Создайте список файлов вне функции, а затем добавьте к нему внутри функции:

ascfile_list = []   # Create list to hold filenames
def ascbutton():
    filename_list = filedialog.askopenfilenames(parent=root, title='Select .ASC File(s)')
    for filename in filename_list:
        L2.insert(tk.END, filename)
        ascfile_list.append(filename)  # Append filename to list
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...