[英]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.