Пишу калькулятор, в качестве тестового приложения.
Есть пролемка... при нажатии на любую кнопку, в терминал выводит число 10
Второй день мучаюсь, не могу понять, что делаю не так.
P.S TKinter недавно начал изучать.
import tkinter
from tkinter import ttk
from tkinter import IntVar
window = tkinter.Tk()
window.title("Калькулятор") # Главный заголовок
window.geometry("340x250") # Длинна и ширина окна
window.resizable(width = False, height = False) # Окно нельзя увеличить и уменьшить
window.configure(background='#222') # Темная тема :-)
res = IntVar()
def result():
''' Основной функционал калькулятора '''
print(num)
# Сложение
adition = ttk.Button(window, text = "+", command = result)
adition.grid(row = 2, column = 4, padx = 12, pady = 2)
# Вычитание
subtraction = ttk.Button(window, text = "-", command = result)
subtraction.grid(row = 3, column = 4, padx = 12, pady = 2)
# Умножение
multiplication = ttk.Button(window, text = "*", command = result)
multiplication.grid(row = 4, column = 4, padx = 12, pady = 2)
# Деление
division = ttk.Button(window, text = "/", command = result)
division.grid(row = 5, column = 4, padx = 12, pady = 2)
# Равенство
res = ttk.Button(window, text = "=", command = result)
res.grid(row = 6, column = 4, padx = 2, pady = 12)
"""
Ниже реализован вывод кнопок и их
расположение по X и Y координатам с помощью циклов.
1) num имеет входное значение = 0
при каждой итерации значение увеличивается на 1.
Но если num равен нулю, координаты X, Y задаются дефолтные.
2) Далее когда X доходит до значения 3, прибавляется значение Y
это служит переходом на новую строку.
"""
num = 0
while num <= 9:
if num == 0:
btn = ttk.Button(window, text = num, command = result)
btn.config(text = num)
btn.grid(row = 5, column = 1, padx = 2, pady = 2)
num+=1
else:
for x in range(3):
for y in range(2,5):
btn = ttk.Button(window, text = num, command = result)
btn.grid(row = y, column = x, padx = 2, pady = 2)
num+=1
result_border = ttk.Entry(window, text = res, font = 'verdana 12') # Поле с результатом
result_border.configure(width = 30)
result_border.grid(row = 1, columnspan = 12,
padx = 12, pady = 12, ipady = 8)
# Программа не закрывается
window.mainloop()