2017-12-14 9 views
0

디렉토리를 검색하고 다시 일치시키는 GUI를 Python으로 작성하려고합니다. 그러나, 나는 그것을 실행할 때마다 '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

그리드 메소드가 없음을 반환하므로 텍스트 필드 변수가 None이므로 초기화 및 그리드 메소드를 분리해야합니다. 쿼리와 같은 문제입니다. 또한 insert 메소드에는 두 개의 args가 필요합니다 : 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.01 \t 장티푸스 뇌막염에게, A01.00 \t 장티푸스 A01.03 \t 장티푸스 심장 참여 폐렴 A01.04 \t 장티푸스 관절염 A01.02 \t 장티푸스를 : 내 목표는 같은 데이터베이스에서 실행하는 것입니다 A01.05 \t 장티푸스 osteomyelitis. 그래서 입력 필드에 A01을 입력하면 A01이있는 모든 항목이 다시 나타납니다. 그러나 내가 달렸을 때 완전히 다른 것을 가져왔다. Typhoid로 검색 용어를 변경하면 이전과 동일한 결과가 나타납니다. 코드가 쿼리 용어를 찾고 행을 검색하지 않고 일치 항목을 다시 가져 오지 않습니까? – Oliver12

+0

@ Oliver12 답변을 업데이트했습니다. 다시 query.grid는 None을 반환하고 str (query)는 None을 반환합니다. 또한 str (query)뿐만 아니라 query.get()을 사용해야합니다. –