1

Tkinter に関する質問:

参照ボタンから選択したファイルを表示するテキスト表示とともに参照を作成したいと思います。以下は私のコードです:

編集 1.

button_opt = {'fill': Tkconstants.BOTH, 'padx': 5, 'pady': 5}
    Tkinter.Button(self, text='Browse and open filename - then manually upload it', command=self.askopenfilename).pack(**button_opt)

    self.file_opt = options = {}        
    options['defaultextension'] = '.txt'
    options['filetypes'] = [('all files', '.*'), ('text files', '.txt')]
        options['initialdir'] = 'C:\\'
    options['initialfile'] = 'myfile.txt'
        options['parent'] = root
        options['title'] = 'Browse'

    self.dir_opt = options = {}
    options['initialdir'] = 'C:\\'
    options['mustexist'] = False
    options['parent'] = root
    options['title'] = 'Browse'

    image = Image.open("/home/kuber/Downloads/godata/images/header.png")
    photo = ImageTk.PhotoImage(image)
    label = Label(image=photo)
    label.image = photo # keep a reference!
    label.place(width=768, height=576)
    label.pack(side = TOP)

    self.centerWindow()
    self.master.columnconfigure(10, weight=1)
    #Tkinter.Button(self, text='upload file', command=self.Fname).pack(**button_opt)    
    self.file_name = Text(self, width=39, height=1, wrap=WORD)

def Fname(self):
    self.file_name = Text(self, width=39, height=1, wrap=WORD)
        self.file_name.grid(row=1, column=1, columnspan=4, sticky=W)

def askopenfilename(self):

   # get filename
     filename = tkFileDialog.askopenfilename(**self.file_opt)

   # open file on your own
     if filename:
     with open(self.filename, 'r') as inp_file:
        print "1"
        self.file_name.delete(0.0, END)
        self.file_name.insert(0.0, inp_file.read())
            #return open(filename, 'r')

[参照] ボタンを押してファイルを開きます。askopenfilename関数からテキストウィジェットに移行することを期待しています。しかし、私はエラーが発生します:

AttributeError: TkFileDialogExample instance has no attribute 'filename'

また、Fname の外側に self.file_name.grid(row=1, column=1, columnspan=4, sticky=W) を含めると、Tkinter がハングします。

4

1 に答える 1

1

`X instance has no attribute 'filename'' のような Python エラーが表示された場合、それはまさにその内容を意味しています。根本的な原因は通常、次の 2 つのいずれかです。

  • X はあなたが使用しようとしていたオブジェクトであり、実際にはその属性を持っていません v (綴りを間違えているか、定義するのを忘れていた可能性があります)。
  • X を使用するようにプログラムに指示しましたが、X はあなたが考えているものではありません (つまり、特定の型のオブジェクトを参照していると思いますが、それは文字列または数値またはその他のクラスです。

ですから、「なぜ TkFileDialogExample はこの属性を持たないのですか? その属性を持つように定義しましたか? どこで、いつ? スペルを間違えましたか? または、コードは他のオブジェクトから属性を取得するはずですか?

言い換えれば、あなたのコードはself.filename:を使用しselfています。

于 2013-05-09T23:17:09.340 に答える