2016-04-23 54 views
-2

我的GUI編號有些問題遊戲: 我希望用戶輸入一個正數(大於零的Interger)。不是浮動。沒有逗號,我可以刪除它們(雖然我不知道如何) If_Else和異常處理概念對我而言仍然是新的。Python 3 - 彈出窗口不按要求顯示

問題我正在面對:我想彈出輸入錯誤信息時出現的框。

from tkinter import * 
from tkinter import ttk 

class App(Tk): 
    def __init__(self): 
     Tk.__init__(self) 

     self.Number() 
     self.Output() 

    def Number(self): 
     Label (self, text = "Enter a positive whole number!").grid(row=1, column = 0) 
     self.Number = Entry(self) 
     self.Number.grid(row = 1, column = 1) 

    def Output(self): 
     self.btn = Button(self, text = "Check the number") 
     self.btn.grid(row = 8, column = 1) 
     self.btn["command"] = self.calculate 

    def calculate(self): 
     #Type cast the tkinter Entry to be an int 
     self.Number = int(self.Number.get()) 
     #Print the class type of the variable self.Number: 
     print (type(self.Number)) 

     #If the interger is equal to zero, display a custom popup box 
     if self.Number == 0: 
      self.newWindow = Toplevel(self) 
      Label(self.newWindow, text = "Please enter a number greater than zero!").grid() 
      self.newWindow.grid() 
     #Else if the number is less than zero, display a custom pop up box 
     elif self.Number <= 0: 
      self.newWindow = Toplevel(self) 
      Label(self.newWindow, text="Plase enter a positive whole number!") 
      self.newWindow.grid() 
     #Check to see if anything has been input at all 
     #Else if the length of the user's input is 0/null, display a custom pop up 
     elif len(self.Number) == 0: 
      self.newWindow = Toplevel(self) 
      Label(self.newWindow, text = "Please enter a number greater than zero!").grid() 
      self.newWindow.grid() 
     #Else if the number is not equal to an int, display a custom pop up 
     elif self.Number != int: 
      self.newWindow = Toplevel(self) 
      Label(self.newWindow, text = "Please enter a number greater than zero!").grid() 
      self.newWindow.grid() 
+0

你是什麼意思*做 「有一些麻煩,」 *?給一個[mcve]。 – jonrsharpe

+0

無論我做什麼彈出框都不會出現,並且我一直在IDLE窗口中出現錯誤。 – cparks10

+1

*什麼*錯誤?! – jonrsharpe

回答

-1

注意,您可以使用Python的內置ISDIGIT()

test_strs=["12345", " 0123", "123.45", "-123", "123x5", "12*67", " 12 45", "0"] 
for eachstr in test_strs: 
    is_not=" IS NOT" 
    if eachstr.isdigit() : 
     is_not=" IS" 
    else: 
     ## display popup in a Toplevel 
    print "%7s %s a digit" % (eachstr, is_not) 
+0

我已將此標記爲「不是答案」,因爲您甚至不試圖回答問題。 –