如何停止进一步输入python



所以我在python中使用tkinter制作计算器,我已经创建了一切都很好,但是在程序显示用户输入的结果(示例5+5 = 10)之后,我如何阻止用户能够更改输入栏中显示的答案(例如,如果他们输入5+5 = 10然后如果他们单击6显示106)如何阻止这个

# import tkinter
from tkinter import *
# create tk systems and create title of program
root = Tk()
root.title("Calc")
subvar = 0
ticket = 0
# create entry bar
# Call this e for easy recall
# Define properties of entry bar
e = Entry(root, borderwidth=5, width=35)
# position entry bar using columns grids and padding
e.grid(row=0, column=0, columnspan=3, pady=5, padx=10)
# Create a function for when user presses number to add on entry
def button_add(number):
# Create new vairble for current entered number
current = e.get() # Use .get to pull number value from button
# Return
e.delete(0, END)
# Put number on screen in entry widget and store as string
e.insert(0, str(current) + str(number))
# Function to clear value in entry widget
def button_clear():
e.delete(0, END)
# + Function -  Function to add to numbers together when "+" is pressed
def function_add():
global subvar
subvar = 0
# Create Variable for first user input number
input1 = e.get()
# define as global variable to use out of function_add
global num1
# Assign global variable an integer value which is the users inputted number
num1 = int(input1)
# Return
e.delete(0, END)
# Subtract Function -  Function to add to numbers together when "-" is pressed
def function_subtract():
global subvar
subvar = 1
# Create Variable for first user input number
input1 = e.get()
# define as global variable
global num1
# Assign global variable an integer value which is the users inputted number
num1 = int(input1)
# Return
e.delete(0, END)
def function_multiply():
global subvar
subvar = 3
# Create Variable for first user input number
input1 = e.get()
# define as global variable
global num1
# Assign global variable an integer value which is the users inputted number
num1 = int(input1)
# Return
e.delete(0, END)

def function_divide():
global subvar
subvar = 4
# Create Variable for first user input number
input1 = e.get()
# define as global variable
global num1
# Assign global variable an integer value which is the users inputted number
num1 = int(input1)
# Return
e.delete(0, END)

#  = Function - Create function to perform funcition  and display 2 added numbers,
def function_equal():
global ticket
if subvar == 1:
input2 = e.get()
e.delete(0, END)
e.insert(0, num1 - int(input2))
ticket = 1
elif subvar == 0:
input2 = e.get()
e.delete(0, END)
e.insert(0, num1 + int(input2))
ticket = 1
elif subvar == 3:
input2 = e.get()
e.delete(0, END)
e.insert(0, num1 * int(input2))
ticket = 1
elif subvar == 4:
input2 = e.get()
e.delete(0, END)
e.insert(0, num1 / int(input2))
ticket = 1
# Create variables for each number value 0-9, define it as button widget, assign its physcal aspects
# create a command function and use Lambda to readily & repeatedly call button add with a select value

button1 = Button(root, command=lambda: button_add(1), text="1", padx=35, pady=10, )
button2 = Button(root, command=lambda: button_add(2), text="2", padx=35, pady=10, )
button3 = Button(root, command=lambda: button_add(3), text="3", padx=35, pady=10, )
button4 = Button(root, command=lambda: button_add(4), text="4", padx=35, pady=10, )
button5 = Button(root, command=lambda: button_add(5), text="5", padx=35, pady=10, )
button6 = Button(root, command=lambda: button_add(6),  text="6", padx=35, pady=10, )
button7 = Button(root, command=lambda: button_add(7), text="7", padx=35, pady=10, )
button8 = Button(root, command=lambda: button_add(8), text="8", padx=35, pady=10, )
button9 = Button(root,  command=lambda: button_add(9), text="9", padx=35, pady=10, )
button0 = Button(root, command=lambda: button_add(0), text="0", padx=35, pady=15, )
# Create variable for clear,add,equals and assign it as button widget, use command to call  function when pressed
buttonAdd = Button(root, text="+", padx=40, pady=20, command=function_add)
buttonSub = Button(root, text="-", padx=40, pady=20, command=function_subtract)
buttonMult = Button(root, text="x", padx=40, pady=20, command=function_multiply)
buttonDiv = Button(root, text="/", padx=40, pady=20, command=function_divide)
buttonClear = Button(root, text="Clr", padx=50, pady=20, command=button_clear)
buttonEqual = Button(root, text="=", padx=55, pady=20, command=function_equal)

# grid system to position numbers 1-3
button1.grid(row=1, column=0)
button2.grid(row=1, column=1)
button3.grid(row=1, column=2)
# grid system to position numbers 1-3
button4.grid(row=2, column=0)
button5.grid(row=2, column=1)
button6.grid(row=2, column=2)
# grid system to position numbers 1-3
button7.grid(row=3, column=0)
button8.grid(row=3, column=1)
button9.grid(row=3, column=2)
button0.grid(row=4, column=0)
# grid system to position all functions
buttonAdd.grid(row=5, column=0)
buttonSub.grid(row=5, column=1)
buttonMult.grid(row=5, column=2)
buttonDiv.grid(row=5, column=3)
buttonEqual.grid(row=4, column=2, )
buttonClear.grid(row=4, column=1, )

# This constantly loops the system and accounts for user movement and input, instead of having an uninteractable static system
root.mainloop()

新增变量user_entry..当用户按下"="并在用户按下" cl"时设置为True.. 当user_entry=False时,button_add函数返回并且不允许在字段中输入数字。

# import tkinter
from tkinter import *
# create tk systems and create title of program
root = Tk()
root.title("Calc")
subvar = 0
ticket = 0
user_entry = True
# create entry bar
# Call this e for easy recall
# Define properties of entry bar
e = Entry(root, borderwidth=5, width=35)
# position entry bar using columns grids and padding
e.grid(row=0, column=0, columnspan=3, pady=5, padx=10)
# Create a function for when user presses number to add on entry
def button_add(number):
if not user_entry: return
# Create new vairble for current entered number
current = e.get() # Use .get to pull number value from button
# Return
e.delete(0, END)
# Put number on screen in entry widget and store as string
e.insert(0, str(current) + str(number))
# Function to clear value in entry widget
def button_clear():
global user_entry
user_entry = True
e.delete(0, END)
# + Function -  Function to add to numbers together when "+" is pressed
def function_add():
global subvar
subvar = 0
# Create Variable for first user input number
input1 = e.get()
# define as global variable to use out of function_add
global num1
# Assign global variable an integer value which is the users inputted number
num1 = int(input1)
# Return
e.delete(0, END)
# Subtract Function -  Function to add to numbers together when "-" is pressed
def function_subtract():
global subvar
subvar = 1
# Create Variable for first user input number
input1 = e.get()
# define as global variable
global num1
# Assign global variable an integer value which is the users inputted number
num1 = int(input1)
# Return
e.delete(0, END)
def function_multiply():
global subvar
subvar = 3
# Create Variable for first user input number
input1 = e.get()
# define as global variable
global num1
# Assign global variable an integer value which is the users inputted number
num1 = int(input1)
# Return
e.delete(0, END)

def function_divide():
global subvar
subvar = 4
# Create Variable for first user input number
input1 = e.get()
# define as global variable
global num1
# Assign global variable an integer value which is the users inputted number
num1 = int(input1)
# Return
e.delete(0, END)

#  = Function - Create function to perform funcition  and display 2 added numbers,
def function_equal():
global user_entry
user_entry = False
global ticket
if subvar == 1:
input2 = e.get()
e.delete(0, END)
e.insert(0, num1 - int(input2))
ticket = 1
elif subvar == 0:
input2 = e.get()
e.delete(0, END)
e.insert(0, num1 + int(input2))
ticket = 1
elif subvar == 3:
input2 = e.get()
e.delete(0, END)
e.insert(0, num1 * int(input2))
ticket = 1
elif subvar == 4:
input2 = e.get()
e.delete(0, END)
e.insert(0, num1 / int(input2))
ticket = 1

# Create variables for each number value 0-9, define it as button widget, assign its physcal aspects
# create a command function and use Lambda to readily & repeatedly call button add with a select value

button1 = Button(root, command=lambda: button_add(1), text="1", padx=35, pady=10, )
button2 = Button(root, command=lambda: button_add(2), text="2", padx=35, pady=10, )
button3 = Button(root, command=lambda: button_add(3), text="3", padx=35, pady=10, )
button4 = Button(root, command=lambda: button_add(4), text="4", padx=35, pady=10, )
button5 = Button(root, command=lambda: button_add(5), text="5", padx=35, pady=10, )
button6 = Button(root, command=lambda: button_add(6),  text="6", padx=35, pady=10, )
button7 = Button(root, command=lambda: button_add(7), text="7", padx=35, pady=10, )
button8 = Button(root, command=lambda: button_add(8), text="8", padx=35, pady=10, )
button9 = Button(root,  command=lambda: button_add(9), text="9", padx=35, pady=10, )
button0 = Button(root, command=lambda: button_add(0), text="0", padx=35, pady=15, )
# Create variable for clear,add,equals and assign it as button widget, use command to call  function when pressed
buttonAdd = Button(root, text="+", padx=40, pady=20, command=function_add)
buttonSub = Button(root, text="-", padx=40, pady=20, command=function_subtract)
buttonMult = Button(root, text="x", padx=40, pady=20, command=function_multiply)
buttonDiv = Button(root, text="/", padx=40, pady=20, command=function_divide)
buttonClear = Button(root, text="Clr", padx=50, pady=20, command=button_clear)
buttonEqual = Button(root, text="=", padx=55, pady=20, command=function_equal)

# grid system to position numbers 1-3
button1.grid(row=1, column=0)
button2.grid(row=1, column=1)
button3.grid(row=1, column=2)
# grid system to position numbers 1-3
button4.grid(row=2, column=0)
button5.grid(row=2, column=1)
button6.grid(row=2, column=2)
# grid system to position numbers 1-3
button7.grid(row=3, column=0)
button8.grid(row=3, column=1)
button9.grid(row=3, column=2)
button0.grid(row=4, column=0)
# grid system to position all functions
buttonAdd.grid(row=5, column=0)
buttonSub.grid(row=5, column=1)
buttonMult.grid(row=5, column=2)
buttonDiv.grid(row=5, column=3)
buttonEqual.grid(row=4, column=2, )
buttonClear.grid(row=4, column=1, )

# This constantly loops the system and accounts for user movement and input, instead of having an uninteractable static system
root.mainloop()

相关内容

最新更新