Форум сайта python.su
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()
if b in ('+','-','*','/'): if ... else: result=Label(win_calc,text=var_calc).place(x=200,y=20)
Отредактировано Xakep321 (Фев. 25, 2018 00:49:29)
Прикреплённый файлы: screen.py (1,6 KБ)
Офлайн
Понять почему оно не работает не в моих силах, вряд-ли причина в том что переменная var_enter_b является строкой. И да, я понимаю что переменные var_enter_a и var_enter_c являются строками, но какой смысл менять их тип если они должны и без того соединятся просто как символы #1+2=12 или a+b=ab
Кто знает tkinter, прошу помочь мне
Отредактировано Xakep321 (Фев. 25, 2018 01:07:31)
Офлайн
Офлайн
vic57Ого, спасибо) Сегодня утром детально изучу эти коды
http://pythonicway.com/python-examples/python-gui-examples/14-python-tkinter-quadratic-equationshttps://www.daniweb.com/programming/software-development/code/216840/tiny-tkinter-calculator-python
Офлайн
НО ВСЕ ЖЕ, кто нибудь обьяснит В ЧЕМ ОШИБКА?
Офлайн
Xakep321а где ты извлекаешь значения из полей чтобы с ними что то делать?
В ЧЕМ ОШИБКА?
Офлайн
marvellikЯ думал что значения сразу присваиваются переменным var_enter_a и тд. Хорошо сейчас попробую именовать им переменные
Офлайн
Xakep321ваш код с исправлением
from tkinter import * def calculator(a,b,c,wroot): var_enter_a = float(a.get()) var_enter_b = b.get() var_enter_c = float(c.get()) if var_enter_b in ('+-*/'): if var_enter_b == '+': var_calc = var_enter_a + var_enter_c elif var_enter_b == '-': var_calc = var_enter_a - var_enter_c elif var_enter_b == '*': var_calc = var_enter_a * var_enter_c elif var_enter_b == '/': var_calc = var_enter_a / var_enter_c else: var_calc = 'non' result = Label(wroot, text = var_calc).place(x=200,y=20) def calc(): win_calc = Tk() win_calc.title('calc') win_calc.geometry('400x300') text_calc = Label(win_calc,text='Calculator').place(x = 0,y = 0) var_enter_a = Entry(win_calc,width = '5') var_enter_a.place(x = 0,y = 20) var_enter_b=Entry(win_calc,width = '5') var_enter_b.place(x = 50,y = 20) var_enter_c = Entry(win_calc,width = '5') var_enter_c.place(x = 100,y = 20) bth_enter_calc = Button(win_calc, text = '=',width = '5', command = lambda : calculator(var_enter_a,var_enter_b,var_enter_c, win_calc)).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()
Отредактировано marvellik (Фев. 25, 2018 14:06:51)
Офлайн
marvellikСпасибо!)) думаю с обработкой неверного ввода разберусь)
Офлайн
Xakep321
количество неправильных вариантов намного больше количества правильных, поэтому разбирать все неправильные нет ни желания, ни потребности.
учитесь делать правильно, примеров в инете тьма
https://github.com/baoboa/pyqt5/blob/master/examples/widgets/calculator.py
Офлайн