from tkinter import * def calculator(): if var_enter_b in ('+','-','*','/'): global var_calc var_calc=0 if var_enter_b=='+': var_calc=var_enter_a+var_enter_c result=Label(win_calc,text=var_calc).place(x=200,y=20) elif var_enter_b=='-': var_calc=var_enter_a-var_enter_c result=Label(win_calc,text=var_calc).place(x=200,y=20) elif var_enter_b=='*': var_calc=var_enter_a*var_enter_c result=Label(win_calc,text=var_calc).place(x=200,y=20) elif var_enter_b=='/': var_calc=var_enter_a/var_enter_c result=Label(win_calc,text=var_calc).place(x=200,y=20) else: result=Label(win_calc,text='non').place(x=200,y=20) def calc(): global win_calc win_calc=Tk() win_calc.title('calc') win_calc.geometry('400x300') text_calc=Label(win_calc,text='Calculator').place(x=0,y=0) global var_enter_a var_enter_a=Entry(win_calc,width='5').place(x=0,y=20) global var_enter_b var_enter_b=Entry(win_calc,width='5').place(x=50,y=20) global var_enter_c var_enter_c=Entry(win_calc,width='5').place(x=100,y=20) bth_enter_calc=Button(win_calc,text='=',width='5',command=calculator).place(x=150,y=18) root.mainloop() root=Tk() # Создание окна root.title('XakConsole') # Название окна root.geometry('400x300') # Размер окна root.resizable(width=False,height=False) # выключена возможность изменять размер окна text_display2=Label(text='Console 1.3 created by Xakep321').place(x=0,y=0) btn_calc=Button(text='КАЛЬКУЛЯТОР',command=calc).place(x=155,y=20) btn_exit=Button(text='ВЫХОД',command=exit).place(x=174,y=50) root.mainloop()
Не судите строго, я учу tkinter только 3 часа, и из крупиц знаний смог скласть это. Но калькулятор, как не крути, выдает значение non, возможно моя ошибка очевидна, но не для меня.
Прошу прощения за этот говно-код, я знаю что вы все обьеденяете в фреймы(frame,рамки), но я все же не понимаю их смысла, если можно и без них писать код (кто может обьяснить - обьясните пожалуйста), и пишете код аккуратнее. Тут можно заметить что в случае сумы должна добавится метка и при повторном использовании калькулятора метка будет налаживаться поверх другой (я не знаю как от этого избавиться).
НО ГЛАВНАЯ ошибка: в условии
if b in ('+','-','*','/'): if ... else: result=Label(win_calc,text=var_calc).place(x=200,y=20)
Пишу это в час ночи по киевскому времени, поэтому может быть много ошибок