2017-12-14 11 views
0

Pythonでディレクトリを検索して一致するGUIを作成しようとしています。しかし、私はそれを実行するたびに、 'NoneType'オブジェクトには、テキストフィールドの挿入部分に 'insert'属性がないというエラーが発生します。私は間違って何をしていますか?'NoneType'オブジェクトには属性 'insert'がありません

from tkinter import * 
root = Tk() 
root.title("ICD-10-CM Lookup") 
ICD_10_CM = StringVar() 
label1 = Label(root, text="ICD-10_CM Code").grid(row=0, column=0) 
query = Entry(root, textvariable=ICD_10_CM).grid(row=0, column=1) 

def search(): 
    infile = open("icd10cm.txt", "r") 
    for line in infile: 
     line = line.strip() 
     elements = line.split("\t") 
     if str(query) in elements[0]: 
      textfield.insert(elements[1]) 
     elif str(query) in elements[1]: 
      textfield.insert(elements[0]) 
    infile.close() 

search_button = Button(root, text="Search", command=search).grid(row=2,column=0) 
textfield = Text(root).grid(row=1,column=1,rowspan=2) 
root.mainloop() 

答えて

0

gridfieldメソッドがNoneを返すため、textfield変数はNoneであるため、初期化とグリッドメソッドを分離する必要があります。クエリと同じこと。また、insertメソッドでは、2つの引数(indexとchars)が必要です。

from tkinter import * 
root = Tk() 
root.title("ICD-10-CM Lookup") 
ICD_10_CM = StringVar() 
label1 = Label(root, text="ICD-10_CM Code").grid(row=0, column=0) 
query = Entry(root, textvariable=ICD_10_CM) 
query.grid(row=0, column=1) 


def search(): 
    infile = open("icd10cm.txt", "r") 
    for line in infile: 
     line = line.strip() 
     elements = line.split("\t") 
     if str(query.get()) in elements[0]: 
      textfield.insert(INSERT, elements[1]) 
     elif str(query.get()) in elements[1]: 
      textfield.insert(INSERT, elements[0]) 
     textfield.insert(END, '\n') 
    infile.close() 


search_button = Button(root, text="Search", command=search).grid(row=2, column=0) 
textfield = Text(root) 
textfield.grid(row=1, column=1, rowspan=2) 
root.mainloop() 
+0

ありがとうございます。 A01.04 \t腸チフス、関節炎、心臓関与 A01.03 \t腸チフス、肺炎でA01.00 \t腸チフス、 A01.01 \t不定腸チフス、髄膜炎 A01.02 \t腸チフス:私の目標は次のようにデータベース上でそれを実行することです A01.05 \t腸チフス骨髄炎。したがって、入力フィールドにA01と入力すると、A01のすべてのエントリが返されます。しかし、私が走った時、それはまったく違う何かを持ち帰った。私が検索語を腸チフスに変更したとき、前と同じ結果が得られました。コードは、行ごとに検索語を検索し、一致語句を返すことはありませんか? – Oliver12

+0

@ Oliver12私は答えを更新しました。再度、query.gridはNoneを返し、str(query)はNoneを返します。また、str(クエリ)だけでなく、query.get()を使用する必要があります。 –

関連する問題