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

2024-10-01 11:35:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我如何使它使如果一个人输入一个大于3000的数字,它打印出一个自定义的消息,而不是计算该数字的阶乘?在

我试过“如果号码>3000,打印”等等“,但是不起作用。我想这和特金特有关。在

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()

Tags: oftheimportnumber数字productdeletepack
1条回答
网友
1楼 · 发布于 2024-10-01 11:35:54

它似乎对我有用。你可以把所有的东西都放在一个类中,
并尝试在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()

相关问题 更多 >