Python - Calculadora Python con Anjuta

   
Vista:

Calculadora Python con Anjuta

Publicado por Mario mafraguerrero@misena.edu.co (4 intervenciones) el 14/08/2013 05:21:17
Cordial Saludo
MIren lo que pasa es que soy nuevo en programación en python entonces tenia que buscar un ide para python pero en linux y encontre uno que se llama anjuta que utiliza python y gtk entonces tenia que hacer como ejercicio una calculadora basica con lista de seleccion de suma,resta,multiplicación y división y no he podido sacar esa parte porque no se como se convierte de cadena a entero en gtk y no se ademas como mostrar el resultado en un label les pido el favor que me ayuden y si pueden ayudarme con el ide anjuta estaría muy agradeciado muchas gracias
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
Imágen de perfil de xve

pasar de cadena a entero

Publicado por xve (1237 intervenciones) el 14/08/2013 09:10:00
Hola Mario para pasar una cadena a entero, es tan sencillo como:
1
2
a="10"
print int(a)
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

pasar de cadena a entero

Publicado por luclinux (26 intervenciones) el 14/08/2013 11:19:43
Y para pasarla a un label, utiliza la propiedad set_text()

a = 10
label.set_text(a)
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

pasar de cadena a entero

Publicado por Mario mafraguerrero@misena.edu.co (4 intervenciones) el 15/08/2013 06:30:44
Muchas gracias amigo, pero con respecto a cambiar de cadena a entero no sabe como en gtk es que ahi si me queda grave es que yo recupero el valor de una caja de texto de la siguiente forma:

numero1 = self.entry1.set_text(str(eval(self.entry1.get_text())))

pero luego de que hago las operaciones e imprimo en consola sale impreso numero1 pero no el numero y no suma por ese pedazo estoy quedado no he podido pasar esa parte a entero si me puedes ayudar te lo agradeceria mucho
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

pasar de cadena a entero

Publicado por luclinux (26 intervenciones) el 15/08/2013 18:44:09
Hola, no me queda claro por tu enunciado lo que quieres hacer, porque parece que estas tomando el valor de entry1, para volver a ponerselo. Tampoco lo has pasado a entero. ¿Quizá algo así es lo que quieres?:

numero1 = eval(self.entry1.get_text())
self.entry1.set_text(int(numero1))

Lo siento si no te he ayudado más.

Un saludo.
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

pasar de cadena a entero

Publicado por Mario mafraguerrero@misena.edu.co (4 intervenciones) el 21/08/2013 14:37:15
Ayuda con esto no me quiere salir la calculadora miren aqui muestro el error que me sale es por no poder pasar la cadena a entero y el codigo que uso para sacar la calculadora

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
#!/usr/bin/python
#
# main.py
# 
# calculadora is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# 
# calculadora is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License along
# with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
import sys
try:
    import gtk
except ImportError:
    sys.exit("pygtk not found.")
 
#Comment the first line and uncomment the second before installing
#or making the tarball (alternatively, use project variables)
UI_FILE = "data/calculadora.ui"
#UI_FILE = "/usr/local/share/calculadora/ui/calculadora.ui"
 
class GUI:
	def __init__(self):
		self.builder = gtk.Builder()
		self.builder.add_from_file(UI_FILE)
		self.window = self.builder.get_object("window1")
		self.label1 = self.builder.get_object("label1")
		self.entry1 = self.builder.get_object("entry1")
		self.label2 = self.builder.get_object("label2")
		self.entry2 = self.builder.get_object("entry2")
		self.combobox = self.builder.get_object("combobox1")
		self.button1 = self.builder.get_object ("button1")
		self.label3 = self.builder.get_object("label3")
		self.builder.connect_signals(self)
 
	def cargarCombo(self):
		#instancia creada con el listStore y se pude colocar numero por cada columna
		#eso se haria asi gtk.ListStore (int,str) para poner un numero por cada opcion
		listaElementos=gtk.ListStore(str)
		#se pone en la lista de seleccion los datos si fuera con el numero quedaria
		#de la siguiente forma listaElementos.append([0,"sumar"])
		listaElementos.append(["Sumar"])
		listaElementos.append(["Restar"])
		listaElementos.append(["Multiplicar"])
		listaElementos.append(["Dividir"])
		#ponemos la lista de elementos al combobox que ya ha sido creado anteriormente
		self.combobox.set_model(listaElementos)
		render=gtk.CellRendererText()
		self.combobox.pack_start(render, True)
		self.combobox.add_attribute(render, 'text', 0)
		#supuestamente con esta  linea se activa el evento change
		self.combobox.set_active(0)
 
	def calcular (self, *args):
		#obtener los valores de las cajas de texto
		#numero1 = self.entry1.set_text(str(eval(self.entry1.get_text())))
		#numero1= self.entry1.set_text(str(self.entry1.get_text))
		numero1 = eval(self.entry1.get_text())
		self.entry1.set_text(int(numero1))
		numero2 = self.entry2.set_text(str(eval(self.entry2.get_text())))
		#obtener el valor del checkbox
		#self.combobox1.set_text(str(eval(self.combobox1.get_text())))
		#pitonpy.blogpost.com/2010/04/como-usar-combobox.html
		model = self.combobox.get_model()
		activo = self.combobox.get_active()
		estado = model[activo][0]
		if estado == "Sumar":
			resultado = numero1+numero2
		if estado == "Restar":
			resultado = numero1-numero2
		if estado == "Multiplicar":
			resultado = numero1*numero2
		if estado == "Dividir":
			resultado = numero1/numero2
		print resultado
	def on_boton_clicked(self, widget, data=None):
		model = self.combobox.get_model()
		activo = self.combobox.get_active()
		if activo>=0:
			self.button1.set_label(model[activo][0])
 
	def change_text(self, widget, *event):
		self.label.set_text("Hello, pygtk world!")
 
def quit(self, widget, *event):
        gtk.main_quit()
 
def main():
	app = GUI()
	app.window.show()
	app.cargarCombo()
	gtk.main()
 
if __name__ == "__main__":
    sys.exit(main()



Entonces si me pueden ayudar se los agradezco mucho la función de calcular es la que falla porque no puedo pasar de cadena a entero y el error que surge es el siguiente

self.entry1.set_text(int(numero1))
TypeError: Gtk.Entry.set_text() argument 1 must be string, not int

gracias por la ayuda
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

pasar de cadena a entero

Publicado por luclinux (26 intervenciones) el 22/08/2013 12:51:19
Y si es el único fallo, y sólo quieres mostrarlo en la etiqueta, ¿porque no lo pasas a string?

self.entry1.set_text(str(numero1))
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

pasar de cadena a entero

Publicado por Mario mafraguerrero@misena.edu.co (4 intervenciones) el 22/08/2013 14:34:32
Si esa si puede ser pero me sale impreso numero1+numero2 y sale el contenido mas no la suma de numeros porque falta cambiar el string a entero y por eso es el error que no puedo cambiar de string a entero
Gracias por su ayuda
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

pasar de cadena a entero

Publicado por luclinux (26 intervenciones) el 23/08/2013 11:56:25
Vale, esto te debería de funcionar:

def calcular (self, *args):
numero1 = eval(self.entry1.get_text())
numero2 = eval(self.entry2.get_text())

resultado = numero1+numero2

print resultado

Un saludo.
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