列出具有选定目录的文件

问题描述 投票:-1回答:1

我想创建一个列表框,该列表框将显示文件夹目录中的内容。

如果我在os.listdir()函数中手动输入目录,则可以执行此操作。但是,当我要分配一个浏览按钮时,该按钮应该位于所选目录中,因此我无法在listdir函数中使用其字符串,甚至无法在主GUI函数中进行打印。所以我得到了流行的错误:

[AttributeError:'_tkinter.tkapp'对象没有属性'dirname']

我寻找了许多关于在其他函数中使用变量,全局变量等的解决方案,但是我无法提供一个可行的解决方案。我想要的是在按我的浏览按钮并选择文件夹后显示.avi文件。

谢谢,


import tkinter as tk
from tkinter import filedialog

import os

class SampleApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        tk.Label(self, text = "Select a folder",  bg="orange", fg="green").grid(row=1, columnspan=3)
        tk.Button(self, text = "Browse", command = self.getFolder).grid(row=1, column=4, sticky = tk.W)

        self.lbox = tk.Listbox(self)

        ### problem is here ###
        print(self.dirname)
        files = os.listdir(self.dirname)
        ### problem is here ###


        tk.Label(self, text = "Select a video",  bg="orange", fg="green").grid(row=2, columnspan=3)
        self.lbox.grid(rowspan=3,columnspan=3)

        for item in files:
            if item.endswith(".avi"):
                self.lbox.insert(tk.END,item)


    def getFolder(self):
        self.dirname = filedialog.askdirectory()
        #print(self.dirname)

app = SampleApp()
app.mainloop()

python class variables tkinter python-3.7
1个回答
0
投票

问题是,即使在定义self.dirname之前,您仍在尝试访问它。它首先在getFolder功能中定义。

因此,选择getFolder后,请在self.driname功能中添加所需的所有代码

© www.soinside.com 2019 - 2024. All rights reserved.