2012-10-28 2 views
0

내가 정수를 입력하면 나는 유효하지 않게된다. 0보다 크거나 같지 않으면 무효화하고 싶습니다. 어떤 도움을 주셔서 감사합니다!편집; tkinter 무게 변환기

from Tkinter import * 
import tkMessageBox 

from Tkinter import * 
import tkMessageBox 

class MyApp(object): 
    def __init__(self): 
     self.root = Tk() 
     self.root.wm_title("Question 7") 
     self.label = Label(self.root, text="Enter weight in pounds", 
         font=('Calibri', 50)) 
     self.label.pack(padx=20,pady=10) 
     self.labeltext = StringVar() 
     self.labeltext.set("") 
     Label(self.root, textvariable=self.labeltext).pack() 
     self.entrytext = StringVar() 
     Entry(self.root, textvariable=self.entrytext).pack() 
     self.entrytext.trace('w', self.entry_changed) 

     self.root.mainloop() 



    def entry_changed(self, a, b, c): 
     s = self.entrytext.get() 
     try: 
     a=int(s)*4.3 
     self.labeltext.set(a) 

답변

0

문제는 첫 번째 부울 조건입니다. 제대로 잡을 수있는 예외를 관리 할 수 ​​

>>> int('Not A Number') 
Traceback (most recent call last): 
    File "<pyshell#5>", line 1, in <module> 
    int('Not A Number') 
ValueError: invalid literal for int() with base 10: 'Not A Number' 

대신이 시도 : 조건은 그 다음 정수로 캐스트로 전환 될 때, 그것은 실패

>>> 'Not A Number' >= 0 
True 

그러나 참으로 평가하고있다 발생되는 :

def entry_changed(self, a, b, c): 
    s = self.entrytext.get() 
    try: 
     a=int(s)*4.3 
     self.labeltext.set(a) 
    except: 
     if s=="": 
      self.labeltext.set("") 
     else: 
      self.labeltext.set("invalid") 

주, 사용자가 부동 eg. 4.3를 입력하면 당신도 그를 해결 할 수 있도록도 예외가 생성됩니다.

+0

숫자를 입력 할 때 유효하지 않게되고 문자를 입력해도 아무 것도 표시되지 않습니다. 하지만 좋은 부정적인 숫자라면 무효합니까 – user1733141

+0

어떤 유형의 번호를 사용하고 계십니까? 정수를 사용하는 경우에는 작동하지만 22.8 또는 0.43과 같은 부동 문자열은 정수로 올바르게 형 변환되지 않으므로 실패합니다. –

+0

정수이지만 아프 편집하고 내 코드를 다시 보겠습니다. – user1733141