@slavamironoff

Почему выводит 10?

Пишу калькулятор, в качестве тестового приложения.
Есть пролемка... при нажатии на любую кнопку, в терминал выводит число 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()
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 2
@yavaskript
так вы в функции result всегда выводите количество итераций - 10
Ответ написан
Комментировать
Потому что выводится переменная num, а она равна 10. Так как while num <= 9
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы