¿Cómo hacer interfaces gráficas GUI para escritorio?

Hola buenas:

Estoy en segundo de carrera de Ingeniería Informática y este verano quería hacer una aplicación de escritorio por mi cuenta. El caso es que en la universidad todavía no hemos tocado mucho este tema y me apetecía hacer esto por mi cuenta, como "hobby".

La idea es hacer una aplicación de escritorio para una empresa que vende X producto. La aplicación tendría que estar en contacto con una base de datos SQL y que tenga las siguientes funcionalidades:

-Hacer facturas.
-Mirar catalogo Base de Datos
-Hacer albaranes
-Hacer presupuestos

Llevo un par de días mirando, y no me queda claro que programa utilizar. El programa no tiene por qué tener un diseño muy llamativo, algo simple y minimalista. Estos son los lenguajes de programación que he estudiado a día de hoy:

-Python
-C++ y C
-Java
-Haskell
-.NET con VB para web
-bash script (aunque no sea lenguaje como tal)

Muchas gracias de antemano [risita]
Bueno, todos tienen API y herramientas para formularios no?

Si lo que quieres es hacerlo vía web usaría Django del tirón, sencillo y te quita de un montón de código boilerplate.

Además, estás en la época de las api rest. Montate una y ya haces la app en el escritorio, web, móvil, y hasta en la Game boy.

Saludos.
@MistGun he leído bastante acerca de dJango, pero claro, al ser web no le había dado importancia. Asique si haces un programa web, luego a partir del mismo puedes hacer una aplicación de escritorio?? Si me pudieras dar más información te lo agradecería!!
Esto no sería mas tema de Pc que del Rincon? ¬_¬
@fonsiyu pues puede ser xD He estado mirando por el tema de "programación", y como el rincón es de "estudios" pues lo he puesto aquí.
oporcoranchero escribió:@MistGun he leído bastante acerca de dJango, pero claro, al ser web no le había dado importancia. Asique si haces un programa web, luego a partir del mismo puedes hacer una aplicación de escritorio?? Si me pudieras dar más información te lo agradecería!!


No exactamente. Mírate lo que es una API rest.

Imagínate que haces una especie de backend a la que tú le pides cosas y está te devuelve la info en forma de json, entonces una vez hecho esto ya puedes hacer el frontend para la plataforma que quieras. Digamos que solo te tendrías que ocupar de que estas apps hicieran peticiones al backend y así no repetir el trabajo del backend varias veces.

Montones de servicios y herramientas modernas tienen su app móvil en Android, iOS, por otro lado la web, etc... usando una API común a la que consultan todos.
@MistGun vale ya me he informado y tiene bastante buena pinta. no tenía ni idea de que existia esto, aunque pensandolo bien tiene bastante sentido. Seguramente me apunte a algún curso de DJango y sea lo que utilice. Muchas gracias
(mensaje borrado)
@MistGun llevo 1 y media buscando información, y hay dos cosillas que no me han quedado claro. Si me las pudieras responder estaría agradecido:

-La BD que se utiliza con DJango es propia. Se puede utilizar una base de datos de SQL server?
-Y he estado mirando lo de API rest, para poder hacer una web y aplicación de desktop a la vez, sólo modificando el front-end pero no he encontrado nada parecido. Si me puedes dar un link o un video estaría agradecido.

MUCHAS GRACIAS
Lo que se está empleando mucho hoy en día para API REST suele ser Spring Boot (Java) de back, que te permite gestionar fácilmente las bases de datos con JPA, y luego un front con Angular 7, por ejemplo.
@oporcoranchero

Yo ya hace tiempo que no toco estos temas pero Django acepta cualquier BBDD. Juraría que con la que se lleva mejor era con postgresSQL. De todas formas con Django la gracia es que no tendrás que tocar nada de SQL, lo harás todo con Python.

Después, como digo ando algo desconectado así que de vídeos tendrás que buscar. Django tiene montones de extensiones y algunas de ellas son para montar API REST.

Yo primero me haría la web la vez que monto la API ya que trabajaras con el mismo entorno y luego con la API funcionando a tope me iría por ejemplo a visual studio y me montaría un proyecto de formularios o GUI y ahí vía código lo conectaría con la API.

Tienes que buscar información sobre cada cosa por separado. Empieza con Django que tiene mucha info y hay varios libros por ahí que hablan y se centran en API REST.

@largeroliker a ver, como digo hace tiempo que estoy desconectado del rollo consultoría pero Java y su uso enterprise no es muy para empresas? Es decir, estamos hablando de un chaval de 2. de carrera no de Indra. A mí es que hacer cosas con java me parece muy verboso y engorroso para grupos reducidos o una persona. Muchísimo código boilerplate, al menos hace un tiempo. Lo mismo ha cambiado y java es genial ahora para un programador autónomo, no se. Por eso le he recomendado Django, porque es brutal para precisamente grupos pequeños o un solo programador por la gran cantidad de curro que te quita.

Saludos.
Todo dependerá de los requisitos reales del programa.

Si lo que va a hacer es un software para un pequeño comercio que solo va a estar en un equipo y es para la gestión interna de ellos, con .NET que ha ya tocado y visual studio se va hacer una interfaz en un periquete y conectarla muy fácilmente a un SQL server.

Para que se va meter a hacer una web, API o cualquier otra cosa mas compleja?
MistGun escribió:@largeroliker a ver, como digo hace tiempo que estoy desconectado del rollo consultoría pero Java y su uso enterprise no es muy para empresas? Es decir, estamos hablando de un chaval de 2. de carrera no de Indra. A mí es que hacer cosas con java me parece muy verboso y engorroso para grupos reducidos o una persona. Muchísimo código boilerplate, al menos hace un tiempo. Lo mismo ha cambiado y java es genial ahora para un programador autónomo, no se. Por eso le he recomendado Django, porque es brutal para precisamente grupos pequeños o un solo programador por la gran cantidad de curro que te quita.

SpringBoot no es igual que el Java original, tiene una barbaridad de código automatizado y optimizado.
De hecho por su potencia y comodidad de uso me planteé migrar a dicha tecnología un proyecto personal mío, pero al final desistí por tener que rehacer todo el código, que estaba en PHP, y dudar de si no me daría problemas el Tomcat en la raspi XD

Además tiene la ventaja, a mi forma de ver, de que te ayuda a ser organizado: SpringBoot según las buenas prácticas se estructura en tres capas, la primera de Presentación (Controller), la segunda de lógica (Service) y la tercera de acceso a BBDD (Repository). Si empiezas con esto y vas aprendiendo a programar de esa forma, será más complicado que luego hagas código spaghetti.
Elkri escribió:Todo dependerá de los requisitos reales del programa.

Si lo que va a hacer es un software para un pequeño comercio que solo va a estar en un equipo y es para la gestión interna de ellos, con .NET que ha ya tocado y visual studio se va hacer una interfaz en un periquete y conectarla muy fácilmente a un SQL server.

Para que se va meter a hacer una web, API o cualquier otra cosa mas compleja?


No sé si has leído al OP pero es un estudiante y hace esto por hobby y para aprender.

No es un autónomo que debe pagar facturas. Es más, para que iba a hacer nada en .net si puede montarse un WordPress en 0 coma...

Creo que es importante contextualizar la necesidad del que busca enriquecer su conomiento respecto del que busca enriquecer su bolsillo.

@largeroliker ah pues genial. Yo me quedé en los tiempos de java infernal y escape traumatizado. Me alegro que haya soluciones para el pequeño programador y no sea todo enfocado al enterprise!
@MistGun si que es verdad que he dicho que lo voy a hacer como "hobby", pero la intención es hacerlo lo más profesional posible. Es un proyecto de mes y medio, asique tengo tiempo suficiente para hacer un buen proyecto.

El tema ahora es que el próximo año, voy a utilizar DJAango y JSF, asique ahora que has dicho de utilizar Java me has sembrado la dudad. Más que nada porque tambien voy utilizar Hibernate, y sería interesante. Asique sigo teniendo dudas, aunque si que es verdad que por lo que he estado viendo, hacerlo por Java parece bastante más engorroso.
oporcoranchero escribió:@MistGun si que es verdad que he dicho que lo voy a hacer como "hobby", pero la intención es hacerlo lo más profesional posible. Es un proyecto de mes y medio, asique tengo tiempo suficiente para hacer un buen proyecto.

El tema ahora es que el próximo año, voy a utilizar DJAango y JSF, asique ahora que has dicho de utilizar Java me has sembrado la dudad. Más que nada porque tambien voy utilizar Hibernate, y sería interesante. Asique sigo teniendo dudas, aunque si que es verdad que por lo que he estado viendo, hacerlo por Java parece bastante más engorroso.


Uff hibernate y jsf. Que dolor xD
Vale, había entendido que lo hacia por "hobby" pero para una empresa real.

Si es por inquietudes, y si realmente se quiere dedicar al mundo del desarrollo, yo tiraría directamente por lo que demanda el mercado actualmente, que básicamente es Spring, pero no responde exactamente a lo que el busca.

Si lo que quiere hacer es una interfaz para escritorio, igualmente tiraría por .NET o Electron, un framework de javascript.
Si vas a usar Hibernate, usa SpringBoot como te he dicho. Hibernate es JPA.

De hecho usarlo es tan sencillo como:

Te haces un proyecto ya predefinido estándar.

Generas las entidades a partir de la base de datos (es automático, hay manuales por la red)

Te haces una interfaz de repositorio que implemente JpaRepository o CrudRepository.

En la capa de servicio, haces toda la lógica que quieras. Por ejemplo, encontrar por ID. Llamas al repositorio, que ya tendrá implementada un método findById, y devuelves el resultado al Controller, que es el entrypoint.
Kotlin + Tornado FX no me parece mala opción
18 respuestas