-1

私はこのページが初めてで、ユーザーのすべての助けを借りて、答えが大好きです。Pythonの初心者で、エントリやラベルにdirの印刷をしたいのですが、たとえば、問題ではありません。

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

明らかにtkinterでは、最後のコードはディレクトリのリストを「印刷」しますが、フォルダーごとに異なるこの「、」でリストを水平にします。この「エントリ」または「ラベル」に垂直のリストが必要です。後で考えますスクロールバーが必要ですが、問題はありません。Windowsの一時フォルダーも同じようにします...

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

しかし、この %temp% は Python では直接動作しません。フォルダの listdir を作成するにはどうすればよいですか?

4

1 に答える 1

2

通常、ディレクトリの内容を表示するには複数行のテキストが必要になるため、 は1行のテキストしか処理できないため、tk.Labelまたはtk.Textウィジェットを使用する必要があります。tk.Entry

さらに、オプションを設定する前に、返される を複数行の文字列に変換する必要がlistありos.listdir()ますtext。とにかく、directory()関数を使用するには、有用な値を返す必要があります。

次のコードは、これらの基本的なことを行い、 を%temp%使用して環境変数の値を拡張する方法を示していますos.path.expandvars()tempfile.gettempdir()または、 Sukrit が推奨する関数を使用して同じ値を取得することもできます。

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()
于 2013-08-12T21:07:26.970 に答える