Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - PUAROT

#1
Scripting / colorchooser.askcolor() en mac
4 Octubre 2017, 00:46 AM
Muy buenas, estaba intentando jugar un poco con tkinter pero no doy con la forma correcta de hacer aparecer el selector de color .
Estoy haciendo esto:
Código (python) [Seleccionar]

from tkinter import *
from tkinter import colorchooser
tk = Tk()
c = colorchooser.askcolor()
canvas = Canvas(tk, width=400, height=400)
canvas.pack()



Lo que quiero es que salga el selector de color y almacenar en una variable el color seleccionado, pero se queda una ventana abierta en blanco y nop sale el selector de color por ningún lado.

Que estoy haciendo mal  ?

#2
Scripting / Python en maquina virtual Ubuntu
4 Junio 2017, 22:41 PM
Tengo una maquina virtual creada en el el mac corriendo Ubuntu 17.04 y tengo problemas con python los cuales no se si son por mi poco conocimiento de linux o por ser una maquina virtual .
El caso es que he tiene instalado python 3.5.3, yo he instalado el pip mediante apt-get install python3-pip y mediante pip3 he instalado esptool (para programar un esp8266 con micropython) pero al ejecutar python3 esptool.py me dice que no se encuentra el archivo o directorio
Donde instala pip3 ? por que me dice que no lo encuentra ?

Todo esto viene por que quiero programar un esp8266 desde linux, luego vendrá la parte de compartir el puerto usb con la maquina virtual ...

Gracias de antemano por la ayuda !
#3
Scripting / Python3 Pyqt OpenCV en MAC
23 Abril 2017, 11:23 AM
Pregunto por que ya estoy mareado, después de mucho buscar no me queda claro.

Tenia instalado Python 3.4 en mi mac ( Sierra OS ) y genial, pero cuando quise empezar a usar OpenCV o Pyqt en todos lados leia que tenia que instalarlo con Brew y que si por lo tanto tenia que instalar python también con Brew, así que me lancé y borre python

instale las xtools el homebrew  y he seguido algunos tutoriales de como hacerlo, pero no me creo que sea tan dificil

Consigo instalar python con brew, pero solo lo tengo por consola, a mi me gustaba el IDLE que trae instalarlo desde la web, se puede conseguir     ?

Se puede instalar OpenCV y Pyqt desde web sion brew y que funcione todo junto  ?

No se si me estoy explicando bien , pero es que al final estoy sin python y ya estoy mareado

Gracias por vuestra ayuda !
 
#4
he visto que se pueden crear diccionarios con expresiones generadoras, y me he puesto a practicar :-P
El caso es que me he propuesto crear un diccionario con los valores del 1 al 100 donde la clave sea un numero impar y el valor el par. {1:2,3:4....}

he intentado crear una expresion generadora por si sola y no he sido capaz, lo mas cerca que he estado es :
Código (python) [Seleccionar]
c = {x:y for x in range(30) if x % 2 != 0 for y in range(30) if y % 2 == 0}

pero el resultado no es el esperado por mi
por lo que he pensado en hacer un generador para los numeros pares y otro para los impares :
Código (python) [Seleccionar]
a = (i for i in range(100) if i % 2 == 0)

b = (i for i in range(100) if i % 2 != 0)

y después crear el diccionario con un bucle for :
Código (python) [Seleccionar]
for i in a:
for j in b:
c[i] = j

pero el resultado tampoco es el esperado por mi y me doy cuenta de que no es la logica correcta, así que intento :
Código (python) [Seleccionar]
for x in a, y in b:
c[x] = y

Estoy seguro de que es mucho mas facil de lo que yo estoy intentando, pero no encuentro la forma adecuada.
En que estoy fallando ?
#5
Estoy empezando un nuevo script en Python3,5 y como soy novato, me surgen dudas sobre como es mejor hacer las cosas.
Hay muchas formas de llegar a un mismo resultado en Python, pero me gustaría saber como es mas "adecuado" hacerlo.

Por ejemplo, estoy empezando un script el cual me averigüe el valor de una resistencia  a partir de sus colores (ya se que habrá miles hechos) y se me ocurren varias formas de hacerlo.

La primera es crear una clase resistencia
Código (python) [Seleccionar]
class Resistencia():
   def __init__(self,color1=None,color2=None,color3=None,color4=None,color5=None,color6=None):
       self.color1 = color1
       self.color2 = color2
       self.color3 = color3
       self.color4 = color4
       self.color5 = color5
       self.color6 = color6


Con un método del tipo :
Código (python) [Seleccionar]
def valor_color(self,color):
       if color == "negro":
           valor = 0
           multiplicador = 1
           tolerancia = None
       elif color == "marron":
           valor = 1
           multiplicador = 10
           tolerancia = 1
       elif color == "rojo":
           valor = 2
           multiplicador = 10
           tolerancia = 2

y un método que calcule el valor total en base a los colores.....


Por otra parte se me ocurre crear una clase color con sus atributos para luego utilizarlos del tipo :
Código (python) [Seleccionar]
class Color():
   def ___init__(self, valor, multiplicador, tolerancia):
       self.valor = valor
       self.multiplicador = multiplicador
       self.tolerancia = tolerancia


y después instanciar varios objetos color con sus valores
Código (python) [Seleccionar]
negro = Color()
negro.valor = 0
negro.multiplicador = 1
negro.tolerancia = None
marron = Color()
marron.valor = 1
marron.multiplicador = 10
marron.tolerancia = None



Que opináis  ?  Cual sería mejor forma ? alguna otra sugerencia  ?

Espero haberme explicado
#6
Scripting / IDE Python 3.x
17 Enero 2017, 12:04 PM
Me gustaría saber que IDES me recomendáis para programar en Python.

La verdad es que hasta ahora estoy con el ide que viene con Python (MAC) y estoy muy cómodo con el por que no tiene complicaciones ningunas, ni hay que configurarle nada, solo que le echo en falta el autocomletado.

Se lo echo en falta no tanto por la comodidad, si no por que me puede ayudar a aprender y conocer mejor tanto el lenguaje en si como los módulos que utilizo, ya  que he visto que algunos al importar una clase, nada mas escribir el punto te salen en orden alfabético el listado de atributos que se pueden utilizar por ejemplo.

Cual me recomendáis que sea sencillo y funcione en Mac ?

Gracias de antemano !
#7
Scripting / lista a traves de generador
29 Diciembre 2016, 23:47 PM
Muy buenas, me estoy enterando de como funcionan los generadores y me surge una duda

si creo un generador :
Código (python) [Seleccionar]
def generador():
a,b = 0 , 1
while a < 2500:
yield a
a,b = b,a+b

este lo almaceno en una variable:
variable = generador()
y luego almaceno en una lista:
lista = list(variable)

Estarán todos los valores que genere en la lista ocupando memoria o solo se crearan a demanda por ser un generador  ?

No se si la ventaja del generador con respecto al uso de memoria sigue siendo tal al pasarlo a lista.

#8
Tengo un problema que no soy capaz de resolver por que no lo entiendo.

Cuando intento utilizar atributos de un objeto que según la documentación de tkinter posee dicho objeto me sale el error AttributeError: 'NoneType' object has no attribute

Me ha pasado intentado poner el foco en un Entry por ejemplo y de lo unico que me he dado cuenta después de buscar por internet ejemplos de utilización, es que cuando sitúas un elemento en una posición con place(x,y) no me funciona, sin embargo al utilizar el .pack() si No lo entiendo, yo quiero diseñar la aplicación diciendo exactamente donde quiero las cosas.

Como no se si me he explicado bien, aquí pongo un ejemplo muy sencillo del problema :
 
Este código funciona:

from tkinter import *

root = Tk()
root.geometry("640x490")

label = Label(root, text='Entrada').place(x=20,y=210)
entry = Entry(root)
button = Button(root, text="Presioname")
button.pack()
entry.pack()

def funcion():
    print (entry.get())
   
button.config(command=funcion)

root.mainloop()


y este no:

from tkinter import *

root = Tk()
root.geometry("640x490")

label = Label(root, text='Entrada').place(x=20,y=210)
entry = Entry(root).place(x=80,y=210)
button = Button(root, text="Presioname")
button.pack()

def funcion():
    print (entry.get())
   
button.config(command=funcion)

root.mainloop()
#9
  Muy buenas, a ver si soy capaz de explicarme bien

Estoy intentando hacer una pequeña interface gráfica en tkinter y ando loco intentando que en un Entry (caja de texto ) aparezca el resultado de una operación pero sin botones.

El siguiente código, coge el numero que le pongamos en la caja1 y cuando pulsamos el botón, rellena la caja2 con el resultado de la operación asignada. cada caja esta asignada a un IntVar diferente.

Si yo asigno las dos cajas a una sola variable sin realizar operación ninguna, osea los dos Entry a un solo IntVar() lo que escribas en el primero se va actualizando y va apareciendo en el segundo, bien pues eso es lo quiero yo hacer, que se actualice conforme vaya escribiendo el numero en la primera caja vaya apareciendo en la segunda el resultado de la operación.

He probado a ponerle al entry  el update_idletasks() pero no ha servido o no se utilizarlo bien, he probado a poner ventana.update  y tampoco

Gracias de antemano !



from tkinter import *

#Ventana
ventana = Tk()
ventana.geometry("640x490")

#Variables
var1= IntVar()
var2= IntVar()

#Labels
etiquetaBinario = Label(ventana,text="Numero",font= ("Times",16)).place(x=20,y=200)
etiquetaOctal = Label(ventana,text="Convertido",font= ("Times",16)).place(x=20,y=240)


#Entry
caja1 = Entry(ventana.update_idletasks(),textvariable=var1,width=24).place(x=110,y=200)
caja2 = Entry(ventana.update_idletasks(),textvariable=var2,width=24,state=DISABLED).place(x=110,y=240)
def cambio():
    numero = var1.get() + 2
    var2.set(numero)

boton1 = Button(ventana,text="  OK  ", command=cambio ).place(x=350,y=350)

#10
Scripting / Sumar y restar horas en Python
5 Junio 2016, 20:48 PM
Después de mucho tiempo buscando como poder restar horas con un formato dado, lo encontré y me funciona, pero mi sorpresa llega cuando veo que para la suma no funciona :-(

Pongo el código de la resta para que lo veáis, y así si alguien busca Restar Horas le ayude:


def restar_hora(self,hora1,hora2):
        formato = "%H:%M:%S"
        h1 = datetime.strptime(hora1, formato)
        h2 = datetime.strptime(hora2, formato)
        resultado = h1 - h2
        return str(resultado)


Este código, al escribir:

restar_hora("10:30:50","09:20:30")


devuelve :
'1:10:20'

Lo que no entiendo es por que este otro código no funciona :

def sumar_hora(self,hora1,hora2):
        formato = "%H:%M:%S"
        h1 = datetime.strptime(hora1, formato)
        h2 = datetime.strptime(hora2, formato)
        resultado = h1 + h2
        return str(resultado)


este código devuelve el error :
TypeError: unsupported operand type(s) for +: 'datetime.datetime' and 'datetime.datetime'

Alguna idea de por que pasa y como solucinarlo ?
#11
Scripting / string como variable
10 Abril 2016, 14:57 PM
Buenas, sigo con el aprendizaje de Python, poco a poco, como es de forma autodidacta, me surgen infinidad de dudas...
Una de estas dudad es la siguiente:

Tengo definidas unas variables globales, y en una de mis funciones pregunto al usuario con un input, y lo que contesta el usuario lo guardo en una variable. Se puede utilizar el estring que se almacena de respuesta del usuario como variable dentro de la función ?

por ejemplo :

binario = 2
base = input("en que formato tienes el numero ? ")
def pasar_a_decimal(num, base):
    decimal = int(num,base)

si el usuario escribe binario base = binario y binario = 2

No se si me he explicado bien  !
#12
Estoy empezando con la programación en Python, y tampoco tengo mucha esperiencia en linux, aunque algo me defiendo.

El problema que tengo es que tengo un pequeño programa hecho por mi en Python, el cual me funciona el el terminal de win y en macos pero en la Raspberry donde tengo instalado la versión 15.10 de UBUNTU MATE, y Python 3,4,3,  si lo ejecuto en el IDLE de Python 3.4.3 funciona bien y si desde terminal le digo : python3 archivo.py o python archivo.py también va bien (he creado un alias ya que no utilizo la versión 2.7 de python ) pero al hacer doble clic en el archivo en el entorno gráfico (en las propiedades del archivo tiene marcada la casilla de permitir tratar el archivo como ejecutable) me da la opción de Ejecutar (la cual no hace nada) y ejecutar en terminal, esta ultima me abre una ventana de terminal y empieza a ejecutar el código, pero devuelve un error que no me da tiempo a leer y se cierra la ventana.

Mi sensación es que al darle a ejecutar en terminal me lo intenta abrir con la version 2.7 de Python instalada en el sistema por defecto, ¿puede ser eso ? como puedo solucionarlo en caso de ser eso  ?

Muchas gracias de antemano y espero que se entienda, que creo que lo he escrito algo enrevesado .
#13
Scripting / Modulo random
14 Enero 2016, 23:18 PM
Tengo una consulta sobre como utilizar el modulo random en un caso concreto, ( no se si puede)

Necesito tener una variable que sea F(x) donde la F es fija y la x un numero aleatorio entre 1 y 150  Por ejemplo
variable = F7

Utilizando  random.randint(0,150) tengo el valor aleatorio, pero no se como utilizarlo para que la variable tenga el valor F7 por ejemplo y no F 7

Se que también está la función shuffle, pero para utilizarla tendría que crear una lista que fuera desde F0 hasta F150

Gracias por la ayuda de antemano !
#14
Ante todo un saludo a todos y dar las gracias por molestaros en leer mi pregunta.

Estoy intentando aprender python 3,x por mi cuenta y riesgo, y es muy frustrante no tener a nadie a quien ir preguntando las dudas y seguir chocando en los mismos errores.Estoy intentando aprender haciendo una pequeña aplicación pero estoy atascado, mi problema puede parecer una chorrada, pero la idea es arreglar esa chorrada para aprender.
Estoy haciendo un menú que me pregunta el tema a tratar para que me lea unos test que tengo en excel, después me pregunta cuantas preguntas quiero, y luego empieza las preguntas.

Quiero reutilizar código y ahí es donde empieza mi problema.

El código se ejecuta y pregunta tema, elijo la respuesta D por ejemplo y me dice que ha cargado el archivo correspondiente y hace una segunda ronda cambiando parámetros para que las opciones no sean temas si no numero de preguntas
Luego sale una frase que dice va a comenzar el tes de x preguntas sobre Y tema

Pues bien en esa frase, para poner el tema me utiliza el valor de la primera pasada de código .
Le podéis echar un vistazo y orientarme un poco ?

Muchas gracias de antemano !!

import openpyxl
import random

selecciona = ["Seleciona el Tema de los test :", "Cuantas preguntas quieres en el Test"]
temas = ["a) Conocimientos Generales ", "b) Derecho ", "c) Factores Humanos", "d) Meteorología", "e) Navegtacióbn", "f) Performances", "g) Principios Operacionales", "h) Principios de vuelo","q) Salir","a) 10", "b) 20","c) 30","d) 40","e) 50","f) 60","g) 70","h) 80"]
respuestas = ["a","A","b","B","c","C","d","D","e","E","f","F","g","G","h","H","q","Q"]
archivo = ['Test/CGA.xlsx','Test/DA.xlsx','Test/FH.xlsx','Test/ME.xlsx','Test/NV.xlsx','Test/PE.xlsx','Test/PO.xlsx','Test/PV.xlsx']
comienza = ["Comienza Test de","preguntas aleatorias de"]

class Selec_tema():
    def __init__(self,m,n,l):
        self.m = m
        self.n = n
        self.l = l
        print (selecciona[l])
        for tema in temas[self.m:self.n]:
            print (tema)
        self.elige()
       
    def elige(self):
        seleccion = input()
        while not (seleccion in respuestas[0:18]):
            print ("Seleción no valida")
            seleccion = input()
        self.comprueba(seleccion)

    def comprueba(self,seleccion):
        if seleccion in ("a","A"):
            self.accion(0)
        elif seleccion in ("b","B"):
            self.accion(1)
        elif seleccion in ("c","C"):
            self.accion(2)
        elif seleccion in ("d","D"):
            self.accion(3)
        elif seleccion in ("e","E"):
            self.accion(4)
        elif seleccion in ("f","F"):
            self.accion(5)
        elif seleccion in ("g","G"):
            self.accion(6)
        elif seleccion in ("h","H"):
            self.accion(7)
        elif seleccion in ("q","Q"):
            print ("Adios")

    def accion(self,pos):
        while self.l == 0:
            self.carga(archivo[pos])
        self.limpia()
        numero_preguntas = (pos +1) * 10
        self.empieza(pos,numero_preguntas)
       
    def carga(self,str):
        print ("archivo cargado")
        cga = openpyxl.load_workbook(str)
        hoja_cga = cga.get_sheet_by_name('Hoja 1')
        p = Selec_tema(9,17,1)
       
    def empieza(self,pos,numero_preguntas):       
        print (comienza[0],numero_preguntas,comienza[1],"".join(temas[pos])[3:])
        r = Test(numero_preguntas)

    def limpia(self):
        for limpia in range(25):
            print ("")

class Test():
    def __init__(self,numero_preguntas):
        self.numero_preguntas = numero_preguntas
        print (numero_preguntas)
#       self.mostrar_preguntas()

    def mostrar_preguntas(self):
        print ( p.hoja_cga["F2"].value)

    def mostrar_respuestas(self):
        pass

    def comprobar_respiuesta(self):
        pass

    def puntuacion(self):
        pass

    def run(self):
        pass

p = Selec_tema(0,9,0)