Форум сайта python.su
Написал небольшой код для примера, но не понимаю, как использовать значения, введенные в поля для расчета. Например, нужно цифру 1 сложить с цифрой 2 и вывести в text.place . Это надо делать через Def, но куда ее вставлять и что писать? Сам процесс пытаюсь понять.
from tkinter import *
root = Tk()
root.title('Calculator')
root.minsize(width=270,height=320)
root.resizable(False,False)
v1 = Entry(root,width=20,bd=2)
v2 = Entry(root,width=20,bd=2)
l = Label(root,text ='Вводим две цифры:', font = 'Arial 10', fg='#CF0000')
c1 = Label(root, text = 'Цифра 1', font = 'Arial 10')
c2 = Label(root, text ='Цифра 2', font = 'Arial 10')
but=Button(root,text='Рассчитать',width=15)
text = Text(root,width=25,height=6,font='12',wrap=WORD)
l.grid(row=0,column=2) # это все можно заменить на _.place(x=_,y=_)
v1.grid(row=1,column=2,padx=20,pady=5)
v2.grid(row=2,column=2,padx=20,pady=5)
c1.grid(row=1,column=1,pady=5)
c2.grid(row=2,column=1,pady=5)
but.place(x=81,y=150)
text.place(x=22,y=190)
mainloop()
Отредактировано daliyovowi (Фев. 6, 2017 08:41:14)
Офлайн
На нажатие клавиши “рассчитать” нужно вешать обработчик события. В нем получать из полей значения и выполнять над ними операции.
Офлайн
Спасибо. Это мой “первый” тинкер и поэтому я даже не понимаю что такое обработчик. Напишите с примерами, так сказать для туповатых
Отредактировано daliyovowi (Фев. 6, 2017 09:07:15)
Офлайн
Держите…
# def work(event, v1, v2): print(v1.get()) print(v2.get()) # but=Button(root,text='Рассчитать',width=15) but.bind("<Button-1>", lambda event: work(event, v1, v2))
Офлайн
1. После этого кода v1.get() переменные являются скорее текстом, поэтому при операции 5+5 получается 55.
2. Нужно чтобы результат выводился в text.place(x=22,y=190)
Собственно так я уже делал, после чего и написал на форум. С меня спасибо и плюс к карме
Офлайн
daliyovowi
На будущее.
1. Выкладывайте свои потуги. Это поможет понять где Вы слегли.
2. Пишите задание целиком, а не урезок с последующим добавлением.
3. Перед тем, как садиться за gui, почитайте что-нибудь по основам.
# def work(event, v1, v2): text.insert("0.end", int(v1.get()) + int(v2.get()) # but=Button(root,text='Рассчитать',width=15) but.bind("<Button-1>", lambda event: work(event, v1, v2, text))
Офлайн
Не выходит
from tkinter import * def work(event, v1, v2): text.insert("0.end", int(v1.get()) + int(v2.get())) root = Tk() root.title('Calculator') root.minsize(width=270,height=320) root.resizable(False,False) v1 = Entry(root,width=20,bd=2) v2 = Entry(root,width=20,bd=2) l = Label(root,text ='Вводим две цифры:', font = 'Arial 10', fg='#CF0000') c1 = Label(root, text = 'Цифра 1', font = 'Arial 10') c2 = Label(root, text ='Цифра 2', font = 'Arial 10') but=Button(root,text='Рассчитать', width=15) but.bind("<Button-1>", lambda event: work(event, v1, v2, text)) text = Text(root,width=25,height=6,font='12',wrap=WORD) l.grid(row=0,column=2) # это все можно заменить на _.place(x=_,y=_) v1.grid(row=1,column=2,padx=20,pady=5) v2.grid(row=2,column=2,padx=20,pady=5) c1.grid(row=1,column=1,pady=5) c2.grid(row=2,column=1,pady=5) but.place(x=81,y=150) text.place(x=22,y=190) mainloop()
Отредактировано daliyovowi (Фев. 6, 2017 13:48:28)
Офлайн
daliyovowi
Уважаемый, у вас в чем проблема? Вы считать не умеете?
Офлайн
Вот вы знаете, некоторые люди не умеют этого делать. А я, я просто очень невнимательный
Всем спасибо большое за помощь Вопрос решен. Плюсанул тех, кто не остался в стороне.
Отредактировано daliyovowi (Фев. 6, 2017 14:26:23)
Офлайн
daliyovowiА при чем тут внимательность? Вам белым по черному написали
А я, я просто очень невнимательный
TypeError: work() takes 3 positional arguments but 4 were given
Офлайн