2012-04-11 69 views
0

我该如何做到这一点,以便如果用户输入一个高于3000的数字,它会打印出一条自定义消息,而不是计算该特定数字的阶乘?在tkinter(python)的条目窗口小部件中设置一个整数限制

我试过'如果number> 3000,打印“等等等等等”,但它不起作用。认为它与tkinter有关。

from Tkinter import * 
import tkMessageBox, os 

#calculates factorial of inputNumber 
def calculate(): 
    number = inputNumber.get() 
    inputNumber.delete(0, END) 
    product = 1 
    for i in range(int(number)): 
     product = product * (i+1) 
    facAnswer.delete(1.0, END) 
    facAnswer.insert(END, product) 

cal = Tk() 
cal.title("Factorial Calculator") 
cal.geometry('450x300+200+200') 

#Enter the number you want the factorial of 
factorialNumber = IntVar() 
inputNumber = Entry(cal, textvariable=factorialNumber) 
inputNumber.pack() 

#executes calculate function by pressing button 
enterButton= Button(cal, text="CALCULATE!", width=20,command=calculate) 
enterButton.pack(side='bottom',padx=15,pady=15) 

#Where the answer appears: 
facAnswer = Text(cal) 
facAnswer.insert(END, "Answer:") 
facAnswer.pack() 

cal.mainloop() 
+0

定义“打印出来”。你期望的信息出现在哪里? – 2012-04-11 04:53:07

+0

in facAnswer,文本部件 – user1323395 2012-04-11 06:35:04

+0

'print'语句将标准输出放在标准输出中。它应该如何知道文本小部件存在,更不用说要让文本出现在一个文本中,更不用说哪一个了? – 2012-04-11 07:44:54

回答

0

它似乎适用于我。您可以将所有内容放入课程
并尝试使用factorialNumber上的get(),以查看它是否有所作为。

import Tkinter as tk 

class GUI(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 

     self.title("Factorial Calculator") 
     self.geometry('450x300+200+200') 

    # Enter the number you want the factorial of 
     self.factorialNumber = tk.IntVar() 
     self.inputNumber = tk.Entry(self, textvariable= 
            self.factorialNumber) 
     self.inputNumber.pack() 

    # executes calculate function by pressing button 
     enterButton= tk.Button(self, text="CALCULATE!", 
           width=20,command=self.calculate) 
     enterButton.pack(side='bottom',padx=15,pady=15) 

    # Where the answer appears 
     self.facAnswer = tk.Text(self) 
     self.facAnswer.insert('end', "Answer:") 
     self.facAnswer.pack() 


    def calculate(self): 
     number = self.factorialNumber.get() 
     if number > 3000: 
      print('The number is out of range.') 
     else: 
      self.inputNumber.delete(0, 'end') 
      product = 1 
      for i in range(int(number)): 
       product = product * (i+1) 
      self.facAnswer.delete(1.0, 'end') 
      self.facAnswer.insert('end', product) 


gui = GUI() 
gui.mainloop() 
+0

好的,会试试这个。谢谢! – user1323395 2012-04-11 06:36:50

+0

@ user1323395我可能误解了你想要做的事情,我更新了方法。 – 2012-04-11 06:53:50

+0

嗯...我尝试它,我得到一个属性错误。我很新,所以我不知道这意味着什么...... – user1323395 2012-04-11 11:13:04

相关问题