Найти - Пользователи
Полная версия: Как использовать для расчетов числа, введенные в поля созданные tkinter?
Начало » GUI » Как использовать для расчетов числа, введенные в поля созданные tkinter?
1 2
daliyovowi
Написал небольшой код для примера, но не понимаю, как использовать значения, введенные в поля для расчета. Например, нужно цифру 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()
4kpt_IV
На нажатие клавиши “рассчитать” нужно вешать обработчик события. В нем получать из полей значения и выполнять над ними операции.
daliyovowi
Спасибо. Это мой “первый” тинкер и поэтому я даже не понимаю что такое обработчик. Напишите с примерами, так сказать для туповатых
4kpt_IV
Держите…

 #
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))
daliyovowi
1. После этого кода v1.get() переменные являются скорее текстом, поэтому при операции 5+5 получается 55.
2. Нужно чтобы результат выводился в text.place(x=22,y=190)

Собственно так я уже делал, после чего и написал на форум. С меня спасибо и плюс к карме
4kpt_IV
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))
daliyovowi
Не выходит

 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()

Выводит при нажатии на кнопку “Рассчитать”:

Exception in Tkinter callback
Traceback (most recent call last):
File “C:\ProgramData\Anaconda3\lib\tkinter\__init__.py”, line 1699, in __call__
return self.func(*args)
File “<ipython-input-10-e09b328c9e52>”, line 18, in <lambda>
but.bind(“<Button-1>”, lambda event: work(event, v1, v2, text))
TypeError: work() takes 3 positional arguments but 4 were given
FishHook
daliyovowi
Уважаемый, у вас в чем проблема? Вы считать не умеете?

daliyovowi
Вот вы знаете, некоторые люди не умеют этого делать. А я, я просто очень невнимательный

Всем спасибо большое за помощь Вопрос решен. Плюсанул тех, кто не остался в стороне.
FishHook
daliyovowi
А я, я просто очень невнимательный
А при чем тут внимательность? Вам белым по черному написали
 TypeError: work() takes 3 positional arguments but 4 were given
три надо, четыре дали
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB