teaching:progappchim:ph_acides_bases_2013

Représentation de pH d'acides et de bases

<sxh python; title : representation_pH_acide.py> #!/usr/bin/env python # -*- coding: utf-8 -*- # travail de QD et TB, ba2 chimie 2012-2013

import Tkinter as tk from numpy import * import matplotlib.pyplot as plt

def get_acide(event):

  """
  fonction pour lire la séléction dans la listbox
  et afficher le pKa correspondant
  """
  indexacide=listbox1.curselection()[0]
  seltextacide=listbox1.get(indexacide)
  listeacide= ['HClO4','HCl', 'HI', 'HNO3', 'H3O+', 'HF', 'HSO4-', 'HBr', 'HClO2', 'HNO2']
  listepka=[-8.6,-6,-10,-1.3,-1.74,3.2,1.9,-9,1.93,3.29]
  acideselect=listeacide.index(seltextacide)
  pkaselect=listepka[acideselect]
  label['text']=pkaselect

def graphe_acide () :

  """ foncton pour tracer le graphe
  du pH de l'acide sélectionné en
  fonction de sa concentration
  """
  
  indexacide=listbox1.curselection()[0]
  seltextacide=listbox1.get(indexacide)
  listeacide= ['HClO4','HCl', 'HI', 'HNO3', 'H3O+', 'HF', 'HSO4-', 'HBr', 'HClO2', 'HNO2']
  listepka=[-8.6,-6,-10,-1.3,-1.74,3.2,1.9,-9,1.93,3.29]
  acideselect=listeacide.index(seltextacide)
  pkaselect=listepka[acideselect]
  if pkaselect < 0:
      x=[0.0001,0.001,0.01,0.1,1]
      y=-log10(x)
      l1=plt.semilogx(x,y,color='m',linewidth=2)
      lx=plt.xlabel("Concentration")
      ly=plt.ylabel("pH")
      t1=plt.title("pH d'un acide fort en fonction de la concentration")
      plt.show()
  elif pkaselect > 0:
      x=[0.0001,0.001,0.01,0.1,1]
      y=0.5*(pkaselect)-0.5*log10(x)
      l1=plt.semilogx(x,y,color='#DAB30A',linewidth=2)
      lx=plt.xlabel("Concentration")
      ly=plt.ylabel("pH")
      t1=plt.title("pH d'un acide faible en fonction de la concentration")
      plt.show()
  

#on crée un sample de données pour la listbox str1= “”“HClO4 HCl HI HNO3 H3O+ HF HSO4- HBr HClO2 HNO2”“”

#va écrire un fichier .txt dans lequel on met le sample #fout –>file output et fin –> file input sont des #fonctions d'édition de fichiers. Ici, le w veut dire 'writing' #et le r veut dire 'reading' #si on mettait a, cela voudrait dire 'appending' fin = open(“chem_data_acide.txt”, “w”) fin.write(str1) fin.close()

#va lire le fichier .txt fout = open(“chem_data_acide.txt”, “r”) chem_list = fout.readlines() fout.close()

#rtstrip pour recopier les éléments de chem_list c2=[chem for chem in chem_list] chem_list = [chem.rstrip() for chem in chem_list] print chem_list print c2 #crée la fenêtre Tk root = tk.Tk() root.title(“Graphique Acide”)

#crée la listbox listbox1 = tk.Listbox(root, width=35, height=6) listbox1.grid(row=0, column=1)

#crée la scrollbar yscroll = tk.Scrollbar(command=listbox1.yview, orient=tk.VERTICAL) yscroll.grid(row=0, column=0, sticky=tk.N+tk.S) listbox1.configure(yscrollcommand=yscroll.set)

#insère les éléments de chem_list dans la listbox for item in chem_list:

  listbox1.insert(tk.END, item)

pka_corresp=tk.Label(root, text='pKa correspondant:') pka_corresp.grid(row=1,column=1) #affiche le pKa correspondant, à chaque cliq listbox1.bind('<ButtonRelease-1>', get_acide) label=tk.Label(root) label.grid(row=2,column=1)

boutongraphe = tk.Button(root, text=“Tracer le graphe!”, command=graphe_acide) boutongraphe.grid(row=3, column=1)

root.mainloop() </sxh>

<sxh python; title : representation_pH_base.py> #!/usr/bin/env python # -*- coding: utf-8 -*- # travail de QD et TB, ba2 chimie 2012-2013

import Tkinter as tk from numpy import * import matplotlib.pyplot as plt

def get_base(event):

  """
  fonction pour lire la séléction dans la listbox
  et afficher le pKa correspondant
  """
  indexbase=listbox1.curselection()[0]
  seltextbase=listbox1.get(indexbase)
  listebase= ['NH3','Aniline (C6H5NH2)', 'Benzylamine (C6H5CH2NH2)', 'n-Butylamine (CH3CH2CH2CH2NH2)', 'Diethylamine (CH3CH2NHCH2CH3)', 'Pyridine (C5H5N)', 'CH3-', 'NH2-', 'OH-']
  listepka=[9.2, 4.62, 9.33, 10.59, 11.68, 5.21, 48, 23, 24]
  baseselect=listebase.index(seltextbase)
  pkaselect=listepka[baseselect]
  label['text']=pkaselect

def graphe_base () :

  """ foncton qui va tracer le graphe
  du pH de l'acide sélectionné en
  fonction de sa concentration
  """
  
  indexbase=listbox1.curselection()[0]
  seltextbase=listbox1.get(indexbase)
  listebase= ['NH3','Aniline (C6H5NH2)', 'Benzylamine (C6H5CH2NH2)', 'n-Butylamine (CH3CH2CH2CH2NH2)', 'Diethylamine (CH3CH2NHCH2CH3)', 'Pyridine (C5H5N)', 'CH3-', 'NH2-', 'OH-']
  listepka=[9.2, 4.62, 9.33, 10.59, 11.68, 5.21, 48, 23, 24]
  baseselect=listebase.index(seltextbase)
  pkaselect=listepka[baseselect]
  if pkaselect < 14:
      x=[0.0001,0.001,0.01,0.1,1]
      y=7+0.5*log10(x)+0.5*pkaselect
      l1=plt.semilogx(x,y,color='m',linewidth=2)
      lx=plt.xlabel("Concentration")
      ly=plt.ylabel("pH")
      t1=plt.title("pH d'une base faible en fonction de la concentration")
      plt.show()
  elif pkaselect > 14:
      x=[0.0001,0.001,0.01,0.1,1]
      y=14+log10(x)
      l1=plt.semilogx(x,y,color='m',linewidth=2)
      lx=plt.xlabel("Concentration")
      ly=plt.ylabel("pH")
      t1=plt.title("pH d'une base forte en fonction de la concentration")
      plt.show()
  

#on crée un sample de données pour la listbox str1= “”“NH3 Aniline (C6H5NH2) Benzylamine (C6H5CH2NH2) n-Butylamine (CH3CH2CH2CH2NH2) Diethylamine (CH3CH2NHCH2CH3) Pyridine (C5H5N) CH3- NH2- OH-”“”

#va écrire un fichier .txt dans lequel on met le sample #fout –>file output et fin –> file input sont des #fonctions d'édition de fichiers. Ici, le w veut dire 'writing' #et le r veut dire 'reading' fout = open(“chem_data_base.txt”, “w”) fout.write(str1) fout.close()

#va lire le fichier .txt fin = open(“chem_data_base.txt”, “r”) chem_list = fin.readlines() fin.close()

#rtstrip pour recopier ce qu'il y a chem_list = [chem.rstrip() for chem in chem_list]

#crée la fenêtre Tk root = tk.Tk() root.title(“Graphique Base”)

#crée la listbox listbox1 = tk.Listbox(root, width=35, height=6) listbox1.grid(row=0, column=0)

#crée la scrollbar yscroll = tk.Scrollbar(command=listbox1.yview, orient=tk.VERTICAL) yscroll.grid(row=0, column=1, sticky=tk.N+tk.S) listbox1.configure(yscrollcommand=yscroll.set)

#insère les éléments de chem_list dans la listbox for item in chem_list:

  listbox1.insert(tk.END, item)

pka_corresp=tk.Label(root, text='pKa correspondant:') pka_corresp.grid(row=1,column=0) #affiche le pKa correspondant, à chaque cliq listbox1.bind('<ButtonRelease-1>', get_base) label=tk.Label(root) label.grid(row=2,column=0)

boutongraphe = tk.Button(root, text=“Tracer le graphe!”, command=graphe_base) boutongraphe.grid(row=3, column=0)

root.mainloop()

</sxh>

Ce site web utilise des cookies. En utilisant le site Web, vous acceptez le stockage de cookies sur votre ordinateur. Vous reconnaissez également que vous avez lu et compris notre politique de confidentialité. Si vous n'êtes pas d'accord, quittez le site.En savoir plus
  • teaching/progappchim/ph_acides_bases_2013.txt
  • Dernière modification : 2013/11/29 11:16
  • de villersd