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ú

Mensajes - PUAROT

#71
  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)

#72
Ante todo GRACIAS por la respuesta.

En segundo lugar te diré que escribí la pregunta y la siguiente contestación pensando precisamente en que no me contestaran este tipo de cosas, por que se que hay mucha gente (yo mismo he caído alguna vez en ese error) que pregunta en los foros sin buscar y para que se lo den todo hecho...
Efectivamente todos estamos aprendiendo, y el que crea que no tiene un autentico problema jejeje
Respecto a lo de autodidacta, lo aclaraba simplemente por aclarar que no estoy dando clases y pretendo que me den los ejercicios resueltas, como en alguna ocasión he visto....  y que esta es mmi única forma de resolver las dudas, ya que la documentación que encuentro muchas veces está escrita para gente con mucho mas nivel, por ejemplo, lo de timedelta, los docstring están escritos para alguien que ya se mueve con soltura en el uso del lenguaje, o eso me parece a mi...
Lo del ingles para nada es una excusa, todo lo contrario , me esta sirviendo para ampliar el vocabulario, pero me cuesta entender , el problema de los traductores, (que los uso ) es que como el lenguaje también está escrito en ingles te traduce comando que seria mejor que dejara en ingles por lo que hay que filtrar muy bien y aun así no siempre sirven de ayuda.
Con todo esto, entiendo perfectamente tus comentarios, por que muchos van a lo fácil.
En mi caso se que podria haber descompuesto las horas en tuplas y anidando if hubiera encontrado la forma de hacerlo ( a lo bestia ) pero mi idea es aprender a usar las herramientas de las que dispongo
Sigo sin entender por que puedo restar horas y no sumarlas, ya que es algo de lo mas natural, hay países con horas de diferencia positivas y negativas, por ejemplo....
Estudiaré el ejemplo que me has puesto para ver si me queda claro el uso de timedelta
Muchas gracias otra vez, y perdón por la parrafada, simplemente quería aclarar que lo que quiero es aprender.
#73
Gracias por responder,

No entiendo el motivo por el cual se pueden restar y no sumar, pero bueno, es así, que le vamos a hacer....

he estado mirando el enlace que me pusiste y he estado buscando sobre timedelta, pero mi ingles medio tirando a básico y el estar empezando con Python, no me han ayudado mucho.
He encontrado que se le pueden sumar segundos y días a una fecha y hora dada, pero no llego a ver en que formato tiene que estar esa hora... .
Me explico , yo tengo la hora en formato 00:00:00 y necesito el resultado en ese formato. Si necesito cambiar ese formato para sumar y volver a cambiar el formato para usarlo después, no me importa, pero no se como utilizar timedelta.

Podrías darme algunas nociones ? no pido que me lo hagan, si no aprender como resolver esta cuestión, ya que es la forma en la que estoy aprendiendo este lenguaje, con tutoriales y prueba error, lo cual a veces es desesperante.

Gracias otra vez !
#74
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 ?
#75
Como bien te comentan, es mas fácil que dividas tu código en distintas funciones o métodos, y así poder llamarlos cuando quieras.
por ejemplo defines una funcion que sume las variables a y b y las multiplique por 2 pues cada vez que quieras hacer eso llamas esa funcion....

mas o menos :

def suma_y_multiplica(a,b):
    resultado = (a + b)*2
    return resultado


Así cada vez que llames a dicha función pasándole como parámetros, dos números te dará el resultado de la función.

Yo también estoy aprendiendo ahora este lenguaje, por lo que mis explicaciones no se si habrán sido del todo claras y correctas.

#76
Scripting / Re: string como variable
12 Abril 2016, 00:21 AM
Ya, eso lo tengo claro, pero como en python (desconozco otros lenguajes, este es el primero que intento aprender :-D ) si pongo :

binario = 2
base = binario
print(base)


me imprime 2, pensé que se podría utilizar esa característica para que la respuesta al input se convirtiera en el valor de la variable, de forma que si contesta binario, base pasara a tomar el valor de binario, osea 2 
#77
Scripting / Re: string como variable
11 Abril 2016, 18:06 PM
Gracias por responder , de la forma que comentas el usuario debe conocer el valor numérico de la base, y mi idea era que el usuario escribiera por ejemplo binario y ya se aplicara la base 2 y si respondiera decimal, pues base diez, se que se puede hacer con condicionales if, elif y else, pero pensé que se podria hacer de otra forma con menos código.

Que si tengo la variable binario = 2  y base = binario , base sería binario.

Gracias otra vez por tomarte la molestia de contestar, sigo aprendiendo y dándome chocazos  :P 
#78
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  !
#79
definitivamente la version que utiliza por defecto es la 2,7 de ahí el error.

Alguien sabe como le digo a linux que quiero que utilice la 3,x por defecto  ?
#80
El problema es que no puedo ver el fallo que sale al final, y aunque coloque un imput al final, el fallo sigue saliendo ya que lo que creo que está pasando es que al abrir con el doble clic y decirle ejecuta en el terminal por defecto me lo abre con python 2,7 y como "no entiende el código " por que está escrito para python 3,x da el error y se cierra.

Hay alguna forma de decirle al SO que ejecute por defecto python 3,x y se olvide de la version 2,7 ??