2014-04-16 2 views
0

이 코드를 더 확장했습니다. 또 다른 문제가 있습니다 : 바인딩 기능이 무시되거나 나는 (물론 나는 항상이 위 내 창 설정을 가지고)이 코드를 실행 :Tkinter GUI에서 엔트리 박스로 덧붙이거나, .get(), append하는 일이 있습니다.

기본적으로
from tkinter import * 
#Window setup, ignore this mostly 
app = Tk() 
app.title('Geometry Calculator') 
app.geometry('384x192+491+216') 
app.iconbitmap('Geo.ico') 
app.minsize(width=256, height=96) 
app.maxsize(width=384, height=192) 
app.configure(bg='WhiteSmoke') 

PointList = [] 


def AddCheck(event): 
    Point = e1.get() 
    PointTest = Point 
    if PointTest.find(',') is True: 
     PTest_X = PointTest[0].split(',') 
     PTest_Y = PointTest[1].split(',') 
     try: 
      PTest_X = float(PTest_X) 
      PTest_Y = float(PTest_Y) 
      PointList.append(Point) 
      l1 = Label(app, text='PointList').grid(row=1, column=0) 
      e1.delete(0, END) 
     except: 
      print('Error: Invalid point format.') 
    if PointTest.find(',') is False: 
     print('Error: Invalid point format.') 

e1 = Entry(app) 
e1.grid(row=0, column=0, sticky=W) 
Entry.bind(e1, '<Return>', AddCheck) 
mainloop() 

, 내 목표는 "검사"를 만드는 것이 었습니다하거나 입력 상자에 입력 한 문자열을 호출 할 수 있습니다 무엇 . 좌표를 다루므로 먼저 문자열에 쉼표가 포함되었는지 확인해야합니다. 하나도 포함되어 있지 않으면 자동으로 터미널에 오류 신호를 보내고 나중에 창이 나타납니다. 쉼표는이 프로그램의 궁극적 인 기능에서 작동 할 문자열의 두 가지 주요 부분을 나눌 것입니다. 그래서 쉼표의 문자열을 두 부분으로 나눕니다. 그런 다음 문자열의 분할 된 부분 (PTest_X 및 PTest_Y)이 Try 문을 사용하여 부동 소수점으로 변환 될 수 있는지 알고 싶었습니다. 이는 쉼표가 변환에서 작동하기 전이나 후에 부동 소수점 숫자 또는 숫자 만 의미하는 것입니다. Try 구문의 Except 부분은 이전과 마찬가지로 터미널에 오류를 반환하도록 지시합니다. 그래서 PTest_X와 PTest_Y가 변환 될 수 있다면, 마침내 목록에 추가하고, 목록의 레이블을 만들고, 다른 작업을 수행하고자 할 때입니다.

이 "검사기"시스템의 요점은 좌표 포인트 "구문"이 잘못된 것이라는 내용을 사용자에게 알려주는 것입니다. 나는 오히려이 시점에서이 시스템을 구현하여 모든 것을 이미 처리 한 후에 사용자가 잘못 입력했음을 알리는 것이 아니라 오히려 사용자가 잘못 입력했다고 말합니다.

사용자 편의를 위해이 작업을 수행하고 있으며, 이는 사용자 상호 작용에있어 언제나 우선적입니다. 나는이 프로그램에 대한 사용자 경험으로 인한 고통을 완화시키기를 희망한다.

답변

0

바인딩 기능이 정상적으로 작동합니다. 문제는 해당 True을 확인하는 경우 find() &을 사용하고 있다는 것입니다. find()은 문자열 else가 -1을 반환하는 것으로 확인되면 색인을 반환합니다.

또한 split은 색인 0,1에 , 이전의 number 값을 얻고 있기 때문에 작동하지 않습니다. 그 다른 레이블 당신이 다음 필요한 경우

from tkinter import * 
#Window setup, ignore this mostly 
app = Tk() 
app.title('Geometry Calculator') 
app.geometry('384x192+491+216') 
app.iconbitmap('Geo.ico') 
app.minsize(width=256, height=96) 
app.maxsize(width=384, height=192) 
app.configure(bg='WhiteSmoke') 

PointList = [] 


def AddCheck(event): 
    print ("hello") 
    Point = e1.get() 
    PointTest = Point 
    print (PointTest) 
    if ',' in PointTest: 
     PTest_X, PTest_Y =PointTest.split(',') 
     try: 
      PTest_X = float(PTest_X) 
      PTest_Y = float(PTest_Y) 
      PointList.append(Point) 
      l1 = Label(app, text=PointList) 
      l1.grid(row=1, column=0) 
      e1.delete(0, END) 
     except: 
      print('Error: Invalid point format.') 
    if PointTest.find(',') is False: 
     print('Error: Invalid point format.') 

e1 = Entry(app) 
e1.grid(row=0, column=0, sticky=W) 
e1.bind('<Return>', AddCheck) 
app.mainloop() 

당신은 루프

를 사용하는 것
관련 문제