简体   繁体   English

在 tkinter(python)中的条目小部件中设置 integer 限制

[英]Set a integer limit in a entry widget in tkinter (python)

How do I make it so that if person enters a number higher than 3000, it prints out a custom message instead of calculating the factorial of that certain number?我如何做到这一点,如果有人输入大于 3000 的数字,它会打印出一条自定义消息,而不是计算该特定数字的阶乘?

I've tried 'if number > 3000, print "blah blah blah"', but it doesn't work.我试过“如果数字 > 3000,打印“blah blah blah””,但它不起作用。 Think it has something to do with tkinter.觉得跟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()

It seemed to work for me.它似乎对我有用。 You could put everything in a class,你可以把所有东西都放在 class 里,
and try using get() on factorialNumber , to see if it makes a difference.并尝试在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()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM