Python - adadadadada

 
Vista:

adadadadada

Publicado por wilmar (1 intervención) el 23/02/2023 17:48:26
Algoritmo sin_titulo
Escribir "Gaseosas $2500"
Escribir "¿cauntas Gaseosas?"
Leer a
Escribir "bolsas de papas $2000, 2% de descuanto"
Escribir "¿cuantas Bolsas de papas?"
Leer b
Escribir "Botellas de agua, $2000, 3% de descuento"
Escribir "¿cuantas Botellas de agua?"
Leer c
Escribir "Chocolatinas $3000, 5% de descuento"
Escribir "¿cuantas Chocolatinas?"
Leer d

r=(a*2500)+(b*1960)+(c*1940)+(d*2850)



Escribir "TOTAL A CANCELAR= ",r
FinAlgoritmo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

adadadadada

Publicado por Rolando José (44 intervenciones) el 26/02/2023 05:04:04
caja
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
catch {destroy .c}
toplevel .c -bg #AAA
wm geometry .c "450x600+0+0"
wm withdraw .
source "basico.tcl"
set p 0
set can 1
set suma 0
place [label .c.l0 -text "producto"] -x 0 -y 50
place [entry .c.e0 -textvar pro] -x 100 -y 50
place [label .c.l1 -text "Cantidad"] -x 0 -y 100
place [entry .c.e1 -textvar can] -x 100 -y 100
place [label .c.l2 -text "precio"] -x 0 -y 150
place [entry .c.e2 -textvar pre] -x 100 -y 150
place [label .c.l3 -text "descuento"] -x 0 -y 200
place [entry .c.e3 -textvar des] -x 100 -y 200
place [button .c.b0 -text "ANOTAR" -command {
set condes [expr ($pre*(1.0-($des/100.0)))]
set subtot [expr ($can*$condes)]
set ::suma [expr ($::suma+$subtot)]
.c.t insert end "\n$can $pro descuento $des Total=$subtot"
}] -x 320 -y 100
place [button .c.b1 -text "PAGAR" -command {
.c.t insert end "\n[string repeat "=" 80]\nTOTAL A PAGAR:\t$suma"
}] -x 320 -y 200
place [text .c.t -font "arial 10"] -x 0 -y 300 -width 400

NO creo que se pueda hacer un programa mas corto y menos con GUI, este deberia funcionar en Windows, Linux y Mac, aunque tambien Funciono con Android. y el paso a python usando el GUI Tkinter puede ser tambien corto, no lo creo pues TCL puede uno trabajar sin llamar funciones lambda no como tkinter que todo hay que definirlo adecuadamente.

Como TCLTK tambien es script como python se necesita un interprete para cada sistema operativo, en python, el tkinter puede servir como interprete de TCLTK, pero la verdad no me acuerdo bien si es con eval o con source.

un evaluador de TCLTK con todas las librerias importantes se encuentra en:
https://www.androwish.org/download/index.html y de esa forma poderlo ejecutar incluso en raspberry o en Android.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

adadadadada

Publicado por Rolando José (44 intervenciones) el 27/02/2023 01:28:59
OTRA FORMA MUY COMPATIBLE DE HACER LAS COSAS ES PROGRAMAR EN HTML Y JAVASCRIPT.
javascript tiene algunas limitaciones con las aplicaciones web que necesiten de Back-end eso quiere decir que no puede hacer servidores, para lo cual necesita a node.js, pero esto sacrifica su compatibilidad, pues no es muy facil instalar node.js en un iot o en una TV o una Nevera, pero si permite hacer el front-end muy compatible y trabajar con otros lenguajes como python que hagan el back-end.

basicamente haces el servidor en python y si necesitas un muy compatible pantalla que muchos usuarios puedan acceder, lo haces en HTML.
Aqui un ejemplo, el mismo código de TCL de arriba , pero en 5 veces mas lineas de codigo pero mucho mas compatible, pues funciona en todos los navegadores de todos los sistemas operativos existentes, me falta probar en BeOS, y en QNX que para el 1990 no habian sacado browser con javascript.

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
<!DOCTYPE html>
<html>
<head>
	<title>CAJA</title>
	<style>
		body {
			background-color: #AAA;
			font-family: Arial, sans-serif;
			font-size: 14px;
			line-height: 1.5;
			margin: 0;
			padding: 0;
		}
 
		.container {
			margin: 0 auto;
			max-width: 450px;
			padding: 20px;
		}
 
		.row {
			align-items: center;
			display: flex;
			margin-bottom: 10px;
		}
 
		.label {
			flex-basis: 100px;
			font-weight: bold;
			margin-right: 10px;
		}
 
		.input {
			flex-grow: 1;
		}
 
		.button {
			background-color: #4CAF50;
			border: none;
			color: white;
			cursor: pointer;
			margin-right: 10px;
			padding: 10px;
		}
 
		.button:hover {
			background-color: #3e8e41;
		}
 
		textarea {
			font-family: Arial, sans-serif;
			font-size: 14px;
			height: 200px;
			margin-top: 20px;
			padding: 10px;
			resize: none;
			width: 400px;
		}
 
		.total {
			border-top: 1px solid #000;
			font-weight: bold;
			margin-top: 20px;
			padding-top: 10px;
			text-align: right;
		}
	</style>
</head>
<body>
	<div id="formulario">
		<label>producto</label>
		<input type="text" id="pro">
		<br>
		<label>Cantidad</label>
		<input type="text" id="can">
		<br>
		<label>precio</label>
		<input type="text" id="pre">
		<br>
		<label>descuento</label>
		<input type="text" id="des">
		<br>
		<button onclick="anotar()">ANOTAR</button>
		<button onclick="pagar()">PAGAR</button>
		<br>
		<textarea id="texto" rows="10" cols="50"></textarea>
	</div>
 
	<script>
		var suma = 0;
 
		function anotar() {
			var pro = document.getElementById("pro").value;
			var can = parseInt(document.getElementById("can").value);
			var pre = parseFloat(document.getElementById("pre").value);
			var des = parseFloat(document.getElementById("des").value);
			var condes = pre * (1.0 - (des / 100.0));
			var subtot = can * condes;
			suma += subtot;
			var texto = document.getElementById("texto");
			texto.value += "\n" + can + " " + pro + " descuento " + des + "% Total = " + subtot;
		}
 
		function pagar() {
			var texto = document.getElementById("texto");
			texto.value += "\n" + Array(81).join("=") + "\nTOTAL A PAGAR:\t" + suma;
		}
	</script>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

adadadadada

Publicado por Rolando José (44 intervenciones) el 27/02/2023 02:47:31
lo prometido es deuda... el siguiente codigo es en python que como puede ser evaluar el codigo de TCL/TK, si tiene la libreria tkinter que se hizo como implementacion de TCL para python, no funciona del todo como en su propio evaluador de TCL, pero python esta mas difundido que TCL, entonces en las aplicaciones como inkscape o Freecad o Blender o LibreOffice donde ya hay un python corriendo scripts .py, muy posiblemente exista una biblioteca tcl86.dll que corre TCL y todos esos programas podrian correr codigo no solo de python sino tambien de TCL.

probe con dos formas y creo que esta funciona mejor y en menos lineas.

1 Forma:
se importa Tkinter
se genera una ventana TK
se define una variable que guarda el código de TCL
se define una función que llama al metodo eval de Tkinter que es el evaluador de código de TCL

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
import tkinter as tk
root = tk.Tk()
 
code = '''
catch {destroy .c}
toplevel .c -bg #AAA
wm geometry .c "450x500+0+0"
wm attributes .c -fullscreen 0 -alpha 1
wm withdraw .
wm title .c "CAJA"
set p 0
set can 1
set suma 0
place [label .c.l0 -text "producto"] -x 0 -y 50
place [entry .c.e0 -textvar pro] -x 100 -y 50
place [label .c.l1 -text "Cantidad"] -x 0 -y 100
place [entry .c.e1 -textvar can] -x 100 -y 100
place [label .c.l2 -text "precio"] -x 0 -y 150
place [entry .c.e2 -textvar pre] -x 100 -y 150
place [label .c.l3 -text "descuento"] -x 0 -y 200
place [entry .c.e3 -textvar des] -x 100 -y 200
place [button .c.b0 -text "ANOTAR" -command {
set condes [expr ($pre*(1.0-($des/100.0)))]
set subtot [expr ($can*$condes)]
set ::suma [expr ($::suma+$subtot)]
.c.t insert end "\n$can $pro descuento $des % Total=$subtot"
}] -x 320 -y 100
place [button .c.b1 -text "PAGAR" -command {
.c.t insert end "\n[string repeat "=" 80]\nTOTAL A PAGAR:\t$suma"
}] -x 320 -y 200
place [text .c.t -font "arial 10" -undo 1] -x 0 -y 300 -width 400
place [button .c.b2 -text "BORRAR" -command {
    .c.t delete 0.0 end
}] -x 320 -y 150
place [button .c.bt0 -text "\[-\]" -command {
set a [wm attributes .c -alpha]
set a [expr $a-0.2]
if {$a <0 || $a > 1} {set a 1}
wm attributes .c -alpha $a
}] -x 300 -y 0
place [button .c.bt1 -text "\[+\]" -command {
set a [wm attributes .c -alpha]
set a [expr $a+0.2]
if {$a <0 || $a > 1} {set a 1}
wm attributes .c -alpha $a
}] -x 330 -y 0
bind all <Motion> {
    wm title .c "%W||[winfo geometry %W]||[winfo class %W]||X:%X%x||Y:%Y%y"
}
bind all <plus> {
set a [wm attributes .c -alpha]
set a [expr $a+0.1]
if {$a<0.4 || $a >0.6} {set a 1}
wm attributes .c -alpha $a
}
bind all <minus> {
set a [wm attributes .c -alpha]
set a [expr {$a-0.2}]
if {$a<0.4 || $a >0.6} {set a 0.5}
wm attributes .c -alpha $a
}
'''
 
def eval_code(code):
    root.eval(code)
 
eval_code(code)
 
root.mainloop()

Hay una desventaja, siempre hay que llamar a tkinter para que haga una ventana al menos, por lo que si van a hacer aplicaciones de consola siempre es mejor python.

La ventaja, es que por ejemplo, python con Tkinter no permite hacer ventanas totalmente transparentes o semi-transparentes:

TCL puede hacer una ventana semitransparente con una valor entre 0.0 y 1.0, de igual forma que lo hace el GUI QTpy o Wxpy.
Tkinter no puede, pero TCL Si.

Quien pruebe este codigo en python, podra ver dos botones en la parte superior un [-] que disminuye la transparencia y un [+] que la aumenta.

de igual forma hice unos eventos que funcionan con las teclas plus y minus que controlan esta transparencia de la ventana.

En Python se necesitaria bibliotecas de QT si quiasieras hacer una ventana semitransparente, un text para copiar lo que esta detras de una ventana.

La ventaja esta en que las librerias de Wxpython son unos 160 MB, si haces una aplicacion, debes instalar toda esa gigante libreria, QT pesa como 35 MB y Tkinter 0.8 MB.

luego siempre es mejor Tkinter y TCL que python para hacer aplicaciones pequeñas compatibles y rapidas.

En TCL si permite hacer este tipo de ventanas, sin necesidad de llamar a librerias especiales de C o C++

En TCL el attributo -alpha hace ventanas semitransparentes y el attributo -transparentcolor #RRGGBB hace transparente ese color en la ventana.

En Tkinter no funciona por lo que tocaria escribir codigo de TCL para que lo haga.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar