在Tkinter上访问临时目录

时间:2013-08-12 17:39:20

标签: python windows python-2.7 tkinter

我在这个页面中的新内容,我喜欢这个答案很好的工作,在用户的帮助下,我在python上的新功能,并想在条目或标签中打印dir无关紧要,例如:

def directory(): os.listdir('/')
files=StringVar()
files.set(directory)
entry=Entry(root, textvariable=files).grid()

显然在tkinter中,最后一个代码会打印一个“打印”目录列表,但是对于每个文件夹不同,使我成为一个水平列表,这个','我希望它在这个“条目”或“标签”上的垂直列表,假设后来需要一个滚动条但是,没有问题,并且对于窗口上的临时文件夹也是如此...

def directory(): os.listdir('%temp%')
    files=StringVar()
    files.set(directory)
    entry=Entry(root, textvariable=files).grid()

但是这个%temp%不能直接在python上工作,我怎样才能创建一个listdir的文件夹?

1 个答案:

答案 0 :(得分:2)

由于显示目录的内容通常需要多行文本,其中每个项目对应一个,因此tk.Label需要使用tk.Texttk.Entry小部件}只能处理单个文本行。

此外,在设置list选项之前,您需要将os.listdir()返回的text转换为多行字符串。无论如何,为了使用你的directory()函数需要返回一个有用的值。

以下代码执行这些基本操作,并演示如何使用%temp%扩展os.path.expandvars()环境变量的值。或者,您可以使用Sukrit推荐的tempfile.gettempdir()函数获得相同的值。

import os
from Tkinter import *

def directory(folder):
    return '\n'.join(os.listdir(folder))  # turn list into multiline string

class App:
    def __init__(self, master):
        frame = Frame(master)
        frame.pack()

        files = directory(os.path.expandvars('%temp%'))
        self.label = Label(root, text=files)
        self.label.pack(side=LEFT)

root = Tk()
app = App(root)
root.mainloop()