Форум сайта python.su
0
Здрасте.Обучаюсь тут по книжке Доусона, и дошел до 10 главы(приложения с интерфейсом), прочитал немного, и решил сам написать программу
Смысл ее очень банален, она должна решать квадратное уравнение, и выводить его корни.
Код:
from tkinter import * class Application(Frame): """вычисление корней квадратного уравнения""" #Метод-конструктор def __init__(self, master): super(Application, self).__init__(master) self.grid() self.create_widgets() #Создание всех главных объектов def create_widgets(self): Label(self, text = 'Для решения вашего квадратного уравнения, введите нужные данные ниже, затем нажмите кнопку Sumbit').grid(row = 0, column = 0, columnspan = 3, sticky = W) Label(self, text = 'Коэф. а:').grid(row = 1, column = 0, sticky = W) self.factora = Entry(self) self.factora.grid(row = 1, column = 1, sticky = W) Label(self, text = 'Коэф. b:').grid(row = 2, column = 0, sticky = W) self.factorb = Entry(self) self.factorb.grid(row = 2, column = 1, sticky = W) Label(self, text = 'Коэф. с:').grid(row = 3, column = 0, sticky = W) self.factorc = Entry(self) self.factorc.grid(row = 3, column = 1, sticky = W) self.main_button = Button(self, text = 'Sumbit', command = self.reveal) self.main_button.grid(row = 4, column = 0, sticky = W) self.main_text = Text(self, width = 35, height = 40, wrap = WORD) self.main_text.grid(row = 6, column = 0, columnspan = 3, sticky = W ) self.second_text = Text(self, width = 20, height = 20, wrap = WORD) self.second_text.grid(row = 7, column = 0, columnspan = 2, stiky = W) #Исполнительная часть def reveal(self): import math a_factor = int(self.factora) b_factor = int(self.factorb) c_factor = int(self.factorc) self.discr = b_factor**2 - 4*a_factor*c_factor if discr >= 0: x1 = (-b_factor - math.sqrt(discr))/2*a_factor x2 = (-b_factor + math.sqrt(discr))/2*a_factor elif discr < 0: x1 = 'Дискриминант меньше 0 => корней нет' x2 = None self.main_text.delete(0.0, END) self.main_text.insert(0.0, x1) self.second_text.delete(0.0, END) self.second_text.insert(0.0, x2) #main root = Tk() root.title('Решение квадратных уравнений') root.geometry('1280x720') app = Application(root) root.mainloop()

Отредактировано droft1312 (Март 9, 2015 03:58:44)
Офлайн
103
1) from tkinter import *
так писать не надо! только для учебных целей и то старайтесь без этого
и на форум так не выкладывайте, а то придет один большой противник этого и попросит вас так больше не делать :)
2) нужно делать так
Label(text='text')
from tkinter import * class Application(Frame): """вычисление корней квадратного уравнения""" #Метод-конструктор def __init__(self, master): super(Application, self).__init__(master) self.grid() self.create_widgets() #Создание всех главных объектов def create_widgets(self): Label(text='Для решения вашего квадратного уравнения, введите нужные данные ниже, затем нажмите кнопку Sumbit').grid(row = 0, column = 0, columnspan = 3, sticky = W) Label(text='Коэф. а:').grid(row = 1, column = 0, sticky = W) self.factora = Entry(self) self.factora.grid(row = 1, column = 1, sticky = W) Label(text='Коэф. b:').grid(row = 2, column = 0, sticky = W) self.factorb = Entry(self) self.factorb.grid(row = 2, column = 1, sticky = W) Label(text='Коэф. с:').grid(row = 3, column = 0, sticky = W) self.factorc = Entry(self) self.factorc.grid(row = 3, column = 1, sticky = W) self.main_button = Button(self, text = 'Sumbit', command = self.reveal) self.main_button.grid(row = 4, column = 0, sticky = W) self.main_text = Text(self, width = 35, height = 40, wrap = WORD) self.main_text.grid(row = 6, column = 0, columnspan = 3, sticky = W ) self.second_text = Text(self, width = 20, height = 20, wrap = WORD) self.second_text.grid(row = 7, column = 0, columnspan = 2, sticky = W) #Исполнительная часть def reveal(self): import math a_factor = int(self.factora) b_factor = int(self.factorb) c_factor = int(self.factorc) self.discr = b_factor**2 - 4*a_factor*c_factor if discr >= 0: x1 = (-b_factor - math.sqrt(discr))/2*a_factor x2 = (-b_factor + math.sqrt(discr))/2*a_factor elif discr < 0: x1 = 'Дискриминант меньше 0 => корней нет' x2 = None self.main_text.delete(0.0, END) self.main_text.insert(0.0, x1) self.second_text.delete(0.0, END) self.second_text.insert(0.0, x2) #main root = Tk() root.title('Решение квадратных уравнений') root.geometry('1280x720') app = Application(root) root.mainloop()
Отредактировано terabayt (Март 9, 2015 03:49:10)
Офлайн
0
terabaytА почему нельзя?В книжке вроде так делают.
1) from tkinter import *так писать не надо! только для учебных целей и то старайтесь без этогои на форум так не выкладывайте, а то придет один большой противник этого и попросит вас так больше не делать2) нужно делать так
, но и на этом спасибо
Офлайн
103
droft1312
но свою задачу не выполняет
#-*- coding: utf-8 -*- from tkinter import * class Application(Frame): """вычисление корней квадратного уравнения""" #Метод-конструктор def __init__(self, master): super(Application, self).__init__(master) self.grid() self.create_widgets() #Создание всех главных объектов def create_widgets(self): Label(self, text='Для решения вашего квадратного уравнения,\nвведите нужные данные ниже,\nзатем нажмите кнопку Sumbit', justify='left').grid(row = 0, column = 0, columnspan = 2, sticky = W) Label(self, text='Коэф. а:').grid(row = 1, column = 0, sticky = W) self.factora = Entry(self) self.factora.grid(row = 1, column = 1, sticky = W) Label(self, text='Коэф. b:').grid(row = 2, column = 0, sticky = W) self.factorb = Entry(self) self.factorb.grid(row = 2, column = 1, sticky = W) Label(self, text='Коэф. с:').grid(row = 3, column = 0, sticky = W) self.factorc = Entry(self) self.factorc.grid(row = 3, column = 1, sticky = W) self.main_button = Button(self, text = 'Sumbit', command = self.reveal) self.main_button.grid(row = 4, column = 0, sticky = W) self.main_text = Text(self, width = 35, height = 1, wrap = WORD) self.main_text.grid(row = 5, column = 0, columnspan = 3, sticky = W ) self.second_text = Text(self, width = 35, height = 1, wrap = WORD) self.second_text.grid(row = 6, column = 0, columnspan = 2, sticky = W) #Исполнительная часть def reveal(self): import math a_factor = int(self.factora.get()) b_factor = int(self.factorb.get()) c_factor = int(self.factorc.get()) discr = b_factor**2 - 4*a_factor*c_factor if discr >= 0: x1 = (-b_factor - math.sqrt(discr))/(2*a_factor) x2 = (-b_factor + math.sqrt(discr))/(2*a_factor) elif discr < 0: x1 = 'Дискриминант меньше 0 => корней нет' x2 = None self.main_text.delete(0.0, END) self.main_text.insert(0.0, x1) self.second_text.delete(0.0, END) self.second_text.insert(0.0, x2) #main root = Tk() root.title('Решение квадратных уравнений') root.geometry('300x200') app = Application(root) root.mainloop()
droft1312поищите на форуме и погуглите
А почему нельзя?В книжке вроде так делают.
Отредактировано terabayt (Март 9, 2015 04:27:53)
Офлайн
0
terabaytБольшое спасибо!
Офлайн