Форум сайта python.su
Здравствуйте!
Отдельную ветку для новичков по гуи не нашел, поэтому пишу сюда, вроде не ошибся.
Вопрос следующий: недавно начал изучать гуи (да и питон, впрочем, тоже). Прочитал до определенного момента Доусона, решил закрепить знания, придумал сам себе задачку.
Суть задачи: Есть поля, куда мы вводим сумму, у нас имеющуюся, а так же что хотим купить и почем.
В общем, что то даже написал, но вот сумму затрат вывести как - не понимаю. Если не прописывать отдельно int() - он проводит, соответственно, конкатенацию чисел как строк. Если прописывать, выдает value ошибку.
from tkinter import *
class Finance(Frame):
def __init__(self, master):
super(Finance, self).__init__(master)
self.grid()
self.operation()
self.math()
def operation(self):
self.your_money_text = Label(self, text = 'Ваши средства').grid(row=0, column=0, sticky =W)
self.your_money = Entry(self)
self.your_money.grid(row=0, column=1, columnspan=2, sticky=W)
self.your_expenses2_text = Label(self, text = 'Ваши потенциальные траты').grid(row = 2, column =0, sticky =W)
self.your_expenses2 = Entry(self)
self.your_expenses2.grid(row =2, column=1, sticky=W)
self.your_buy_text = Label(self, text='Ваша покупка?').grid(row=2, column=2, sticky=W)
self.your_buy = Entry(self).grid(row=2, column=3)
self.your_expenses_text = Label(self, text='Ваши потенциальные траты')
self.your_expenses.grid(row=4, column=0, sticky=W)
self.your_expenses = Entry(self).grid(row=4, column = 1)
self.your_buy_text = Label(self, text='Ваша покупка?').grid(row=4, column=2, sticky=W)
self.your_buy = Entry(self).grid(row=4, column=3, sticky =W)
self.result = Text(self, width=5, height=5, wrap=WORD)
self.result.grid(row=7, column=0, sticky=W)
self.but = Button(root, text='click me', command=self.math).grid(row=6, columnspan=4, sticky=W)
def math(self):
a = self.your_money.get()
b = self.your_expenses2.get()
c = int(a) + int(b)
self.result.delete(0.0, END)
self.result.insert(0.0, c)
root = Tk()
root.title('Программа1')
root.geometry('500x500')
manager = Finance(root)
root.mainloop()
Офлайн
Тут несколько ошибок.
1. Вы в __init__ зачем-то запускаете функцию-обработчик события math. Зачем, остается загадкой
2. Если поле пустое, то int(xxx.get()) выдаст ошибку.
Для проверки пропринтуйте переменные:
def math(self): a = self.your_money.get() b = self.your_expenses2.get() print(a, b)
Офлайн
4kpt_IVБольшое спасибо! Закомментировав math в __init__ исправил ошибку.
Тут несколько ошибок.1. Вы в __init__ зачем-то запускаете функцию-обработчик события math. Зачем, остается загадкой 2. Если поле пустое, то int(xxx.get()) выдаст ошибку.Для проверки пропринтуйте переменные:
Отредактировано Santik (Июль 18, 2016 17:30:55)
Офлайн
Вы все правильно поняли. Да. Метод __init__ выполняется при инициализации экземпляра класса. В Вашем случае в строке
Santik
manager = Finance(root)
Офлайн