2016-11-11 17 views
-1

私はTkinterでPythonでテキストエディタを作ろうとしていますが、問題が発生しました。Python(Tkinter) - テキストエディタ - Find関数

私はテキストエディタのための検索機能を作ろうとしてきましたが、これまでうまくいきませんでした。

ここに私の気があります。

def find(self): 
    target = askstring('Mainwindow','Search string') 
    if target: 
     where = self.aText.search(target,INSERT,END) 
     if where: 
      print(where) 
      pastit = where + ('+%dc' % len(target)) 
      self.aText.tag_add(SEL, where, pastit) 
      self.aText.mark_set(INSERT, pastit) 
      self.aText.see(INSERT) 
      self.aText.focus() 

私はこれを実行すると、それはこの例を示します

はAttributeError:「_tkinter.tkapp」オブジェクトが属性を持っていない「aText」

私は、検索ウィンドウを開くことができますが、それはしないだろう何私は欲しいと言いたいことはもちろんです。

アイデア?

+0

実際にこの問題を示すには十分なコードではありません。おそらく、あなたは実際にあなたのテキストフィールドを '' self.aText''に割り当てたことはありません。 – jasonharper

+0

pythonがあなたのアプリケーションに 'aText'という名前の属性がないことを伝えている場合は、それを信じる必要があります。私たちはあなたがどこにそれを定義していると思うか分からないので、問題が何であるかは言えません。 –

答えて

0

この例外の解決方法は、MCVEです(解決方法はコメントアウトされています)。

import tkinter as tk 
root = tk.Tk() 
# root.aText = tk.Text(root) 
print(root.aText) 

これは

Traceback (most recent call last): 
    File "F:\Python\mypy\tem.py", line 3, in <module> 
    root.aText 
    File "C:\Programs\Python36\lib\tkinter\__init__.py", line 2095, in __getattr__ 
    return getattr(self.tk, attr) 
AttributeError: '_tkinter.tkapp' object has no attribute 'aText' 

コメントを解除行を生成し、(今後の3.6.0b4で)

.!text 

を取得し、あなたがタイプミス、そうでない場合は不足しているラインを持っている場所を今すぐ見つけます。

注:初心者の間違いは、実行とテストの前にあまりにも多くのコードを入力することです。私の見解では、where =コードが動作していることが分かるまで、if where:コードを書いてはいけません。これは、失敗が以前に実行されたコードではなくwhere =ステートメントにあったと仮定しています。

関連する問題