1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
| #! /usr/bin/env python
# -*- coding: utf-8 -*-
from Tkinter import *
from math import *
from tkMessageBox import askokcancel
def calculer():
# entree des coefficients RTA , %RTA, qv , qt , a
RTA,Pr,qv,qt,a = float(entr4.get()),float(entr3.get()),float(entr2.get()),float(entr1.get()),float(entr0.get())
# Calcul des parametres :
H=(RTA*Pr)/100
qr=sqrt(((qv**2)+(qt**2)))
fn=((a**2)*qr)/(8*H)
Sn=a+(((a**3)*(qr**2))/(24*H*H))
txt0.configure(text = "" + str(RTA))
txt1.configure(text = "" + str(Pr))
txt2.configure(text = "" + str(qv))
txt3.configure(text = "" + str(qt))
txt4.configure(text = "" + str(a))
text_x1.configure(text = "" + str(H))
text_x2.configure(text = "" + str(qr))
text_x3.configure(text = "" + str(fn))
text_x4.configure(text = "" + str(Sn))
def presentation():
"Fenetre-message contenant la description sommaire de la methode de calcul"
msg =Toplevel()
Message(msg, bg ="dark green", fg ="white", width =810,font ="Arial 9",
text =''' Methode de calcul\n
La methode choisie est assez originale, ''').pack(padx =10, pady =10)
#_________________________________________________________________________________________________________________________________________________________________________
def processus():
"Fenetre-message contenant la description du processus"
msg =Toplevel()
Message(msg, bg ="dark green", fg ="white", width =500,font ="Arial 9",
text='''PROCESSUS a suivre\n
1. Entrer les valeurs de la résistance à la traction assignée , le pourcentage de la tension, la charge verticale est horizontale et la portée.
2. Cliquer sur le bouton < Resoudre ! > :
3. Les outputs sont la flèche, la tension, la charge résultante et la longueur totale du câble :
5. Cliquer sur < Quitter !> pour abandonner \n''').pack(padx =10, pady =10)
#_________________________________________________________________________________________________________________________________________________________________________
def aPropos():
"Fenetre-message indiquant les versions utilisees"
msg =Toplevel()
Message(msg, width =200, aspect =100, justify =CENTER,
text ='''Sag and tension in overhead conductors
UdeS, Mai 2016
Python version 2.7
Tk version 8.4''').pack(padx =10, pady =10)
#_________________________________________________________________________________________________________________________________________________________________________
def quitter():
" pour quitter l'application "
ans=askokcancel('Sag and tension in overhead conductors',"Do you want to quit ?")
if ans:root.quit()
#_________________________________________________________________________________________________________________________________________________________________________
def makemenu(win):
"barre de menu"
top=Menu(win)
win.config(menu=top)
R=Menu(top)
top.add_cascade(label='Presentation',menu=R,underline=0)
R.add_command(label='Methode de calcul',command=presentation,underline=0)
R.add_command(label='Processus',command=processus,underline=0)
R.add_command(label='A propos',command=aPropos,underline=0)
Q=Menu(top)
top.add_cascade(label='Quitter !',menu=Q,underline=0)
Q.add_command(label='Quitter !!',command=quitter,underline=0)
QQ=Menu(top)
top.add_cascade(label='play !',menu=QQ,underline=0)
QQ.add_command(label='Load',command=quitter,underline=0)
QQ.add_command(label='Span',command=Image,underline=0)
#_________________________________________________________________________________________________________________________________________________________________________
#Programme Principal
root = Tk()
root.title("Sag and tension in overhead conductors")
root.geometry('1000x1000')
L=500
R=8
makemenu(root)
#_________________________________________________________________________________________________________________________________________________________________________
can=Canvas(root,bg='White',height=L,width=L)
can.grid(row=10,column=0)
can.create_line(0,L/2,L,L/2,fill='black')
can.create_line(L/2,0,L/2,L,fill='black')
(Label(root, text = "Sag and tension in overhead conductors")).grid(row=0, column=0)
#Entrees
entr4 = Entry(root)
entr4.grid(row=1, column =1)
entr3 = Entry(root)
entr3.grid(row=2, column =1)
entr2 = Entry(root)
entr2.grid(row=3, column =1)
entr1 = Entry(root)
entr1.grid(row=4, column =1)
entr0 = Entry(root)
entr0.grid(row=5, column =1)
(Label(root, text = "Saisir la RTA =")).grid(row=1, column=0,sticky=E)
txt0 = Label(root)
(Label(root, text = "Saisir la %RTA =")).grid(row=2, column=0,sticky=E)
txt1 = Label(root)
(Label(root, text = "Saisir la charge verticale qv =")).grid(row=3, column=0,sticky=E)
txt2 = Label(root)
(Label(root, text = "Saisir la charge transversale qt =")).grid(row=4, column=0,sticky=E)
txt3 = Label(root)
(Label(root, text = "Saisir la portee a =")).grid(row=5, column=0,sticky=E)
txt4 = Label(root)
#Output and results display
(Label(root, text = "La tension horizontale H =")).grid(row=6, column=0,sticky=E)
text_x1 = Label(root)
text_x1.grid(row=6, column =1)
(Label(root, text = "La charge resultante Qr =")).grid(row=7, column=0,sticky=E)
text_x2 = Label(root)
text_x2.grid(row=7, column =1)
(Label(root, text = "La fleche F=")).grid(row=8, column=0,sticky=E)
text_x3 = Label(root)
text_x3.grid(row=8, column =1)
(Label(root, text = "La longueur totale du cable L =")).grid(row=9, column=0,sticky=E)
text_x4 = Label(root)
text_x4.grid(row=9, column =1)
can.create_text(L-30,L/2-10,text='axe x',fill="green")
can.create_text(L/2+40,10,text='axe y',fill="green")
can.create_text(L-10,L/2+10,text='5',fill="green")
can.create_text(10,L/2+10,text='-5',fill="green")
can.create_text(L/2-10,L/2+10,text='0',fill="green")
can.create_text(L/2-10,10,text='5',fill="green")
can.create_text(L/2-10,L-10,text='-5',fill="green")
txt_x1=can.create_text(-10,0,text='x1',fill="yellow")
txt_x2=can.create_text(-10,0,text='x2',fill="yellow")
txt_x3=can.create_text(-10,0,text='x3',fill="yellow")
txt_x4=can.create_text(-10,0,text='x4',fill="yellow")
# creation d'un widget 'Canvas' contenant une image bitmap :
#can2 = Canvas(root, width =500, height =500, bg ='white')
#photo = PhotoImage(file ='pic.gif')
#can2.create_image(200,200, image =photo)
#can2.grid(row =10, column =1, rowspan =6, padx =10, pady =5)
button = Button(root, text='Resoudre', command =calculer)
button.grid(row=6, column =0)
root.mainloop()
root.destroy() |
Partager