1

そのため、クラス内の別の関数から関数の変数の値にアクセスする方法を理解するのに苦労しています。

    import Tkinter as tk, tkFileDialog

    class test:
        def __init__(self):
            root = tk.Tk()
            song_button = tk.Button(root, text = 'Select Song', fg = 'blue', command = self.loadfile).pack()
            #how do I access the value of filename now?

        def loadfile(self):
            filename = tkFileDialog.askopenfilename(filetypes=[("allfiles","*"),("pythonfiles","*.py")])
4

1 に答える 1

1

現在、ファイル名はloadfile関数内の単なるローカル変数です。ファイル名をオブジェクトの属性にする必要があります。self.filename = ...を実行すると、他の方法で としてアクセスできますself.filename

(この特定のケースでは、あなたが求めていることは少し奇妙に思えます。なぜなら、loadfileあなたがアクセスしたいと思っているときに呼び出されていないfilenameため、filename存在さえしないからです。しかし、これは一般的な考え方です。何があっても、明らかに、変数を使って何かを行う前に、変数が定義されている関数を呼び出す必要があります。)

于 2012-09-03T19:39:46.773 に答える