2017-11-06 6 views
0

私はsave_file関数にいくつかのキーをバインドしています。最初に保存してからエラーコード "AttributeError: 'Event'オブジェクトには 'get'属性がありません。メインメニューのボタンをクリックすると、実際にわかりません。私は何をすべきか?バインドに関する問題

self.text = Text(root, bg="white", wrap='word', undo=True, foreground="black", exportselection="no") 
    self.text.bind("<Control-Alt-s>", self.save_file_as) 
    self.text.bind("<Control-s>", self.save_file) 
    self.text.bind("<Control-o>", self.open_file) 
    self.text.focus_set() 
    self.text.pack(fill='both', expand=1) 

機能 self.filename = '' self._filetypes = [( 'テキスト'、 '.TXT')、( 'すべてのファイル'、 '')、]

#calls the save function 
def saveFile(self): 
    self.save_file(self.text) 

#saving all The files 
    def save_file(self, texts): 
     self.text2 = texts 
     if (self.filename == ''): 
      self.save_file_as() 
     else: 
      f = open(self.filename, 'w') 
      f.write(self.text2.get('1.0', 'end')) # change every 'self' that refers to the Text, to self.text2 
      f.close() 
      tkinter.messagebox.showinfo('FYI', 'File Saved.') 
     root.title(self.filename) 
    def save_file_as(self, whatever=None): 
     self.filename = tkinter.filedialog.asksaveasfilename(defaultextension='.txt', filetypes=self._filetypes) 
     f = open(self.filename, 'w') 
     f.write(self.text2.get('1.0', 'end')) 
     f.close() 
     tkinter.messagebox.showinfo('FYI', 'File Saved') 
+0

あなたが提供したコードは、問題の原因を推測するには不十分です –

答えて

1

バインドされた関数が呼び出されると、それにイベントオブジェクトが渡されます。あなたのパラメータはtextだと思うのは事実です。試してみてください:

def save_file(self, event): 
     self.text2 = event.widget 
     if (self.filename == ''): 
      self.save_file_as() 
     else: 
      f = open(self.filename, 'w') 
      f.write(self.text2.get('1.0', 'end')) # change every 'self' that refers to the Text, to self.text2 
      f.close() 
      tkinter.messagebox.showinfo('FYI', 'File Saved.') 
     root.title(self.filename) 

    def save_file_as(self, event=None, whatever=None): 
     self.filename = tkinter.filedialog.asksaveasfilename(defaultextension='.txt', filetypes=self._filetypes) 
     f = open(self.filename, 'w') 
     f.write(self.text2.get('1.0', 'end')) 
     f.close() 
     tkinter.messagebox.showinfo('FYI', 'File Saved') 
関連する問題