Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from threading import Thread
- from Queue import Queue
- from Tkinter import Tk, Label, Button, Entry, Text, END, DISABLED, NORMAL
- import time
- requests = Queue()
- responses = Queue()
- def logic():
- while True:
- gui_print("Enter three numbers.")
- a = get_gui_input("first number:")
- b = get_gui_input("second number:")
- c = get_gui_input("third number:")
- gui_print("Calculating...")
- time.sleep(2)
- gui_print("their sum is {}".format(int(a)+int(b)+int(c)))
- if get_gui_input("Continue?").lower() == "n":
- break
- def gui_print(s):
- requests.put(("print", s))
- def get_gui_input(prompt=""):
- requests.put(("input", prompt))
- return responses.get()
- business_logic = Thread(target=logic)
- business_logic.daemon = True
- business_logic.start()
- def idle():
- if not requests.empty():
- kind, s = requests.get()
- if kind == "print":
- print_area.insert('end', s + "\n")
- elif kind="input":
- input_prompt_label.config(text=s)
- button.config(state=NORMAL)
- else:
- raise Exception("Unknown request type {}".format(kind))
- if business_logic.is_alive():
- root.after(100, idle)
- else:
- root.destroy()
- def clicked():
- text = response_entry.get()
- print_area.delete('1.0', END)
- response_entry.delete(0, END)
- responses.put(text)
- input_prompt_label.config(text="")
- button.config(state=DISABLED)
- root = Tk()
- print_area = Text(root, height=10)
- print_area.pack()
- input_prompt_label = Label(root)
- input_prompt_label.pack()
- response_entry = Entry(root)
- response_entry.pack()
- button = Button(root, text="submit", command=clicked, state=DISABLED)
- button.pack()
- root.after(100, idle)
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement