Skip to content

Instantly share code, notes, and snippets.

@Aragroth
Last active September 17, 2020 06:04
Show Gist options
  • Select an option

  • Save Aragroth/22b2a88e12341919268339b4cd83a099 to your computer and use it in GitHub Desktop.

Select an option

Save Aragroth/22b2a88e12341919268339b4cd83a099 to your computer and use it in GitHub Desktop.
Simple tkinter calculator
import tkinter as tk
class ResultFrame(tk.Frame):
def __init__(self, master, *args, **kwargs):
super().__init__(master, *args, **kwargs)
self.build_frame()
self.input_frame = self.open_input_window(master)
def build_frame(self):
self.label = tk.Label(text="Здесь будет результат")
self.label.pack(padx=5, pady=10)
self.result_button = tk.Button(text='Подсчитать', width=25, command=self.represent_sum)
self.result_button.pack()
def represent_sum(self):
value = self.input_frame.sum_values()
self.label['text'] = f"Ответ: {value}"
@staticmethod
def open_input_window(master):
"""
Create new window for input field
:param master: parent window
:return: tk.Frame
"""
x, y = master.winfo_x(), master.winfo_y()
input_window = tk.Toplevel()
input_window.geometry(f"+{x + 500}+{y + 100}")
return InputFrame(input_window)
class InputFrame(tk.Frame):
def __init__(self, master, *args, **kwargs):
super().__init__(master, *args, **kwargs)
self.entries = []
self.create_entry(master, col=0)
self.create_entry(master, col=1)
def create_entry(self, master, col):
new_entry = tk.Entry(master, fg="white", bg="grey")
new_entry.grid(row=0, column=col, padx=5, pady=5)
self.entries.append(new_entry)
def sum_values(self):
try:
value = sum(map(int, (entry.get() for entry in self.entries)))
except ValueError:
value = "Введите коректные данные"
return value
def main():
root = tk.Tk()
root.title("Калькулятор")
root.geometry("300x100")
ResultFrame(root).pack()
root.mainloop()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment