2010-04-16 11 views
15

Todavía no he llegado lo suficientemente lejos de Python como para hacer GUI, así que pensé en preguntar aquí. ¿Se puede hacer una aplicación de Python con la GUI predeterminada de Windows o tendrá su propio estilo? Las únicas capturas de pantalla que he visto de una aplicación de Python ejecutada con una GUI tienen este aspecto feo de win95.¿Se puede hacer una interfaz gráfica de usuario nativa con Python?

+2

Puede encontrar información útil en esta pregunta relacionada: http://stackoverflow.com/questions/426718/what-cross-platform-gui-libraries-are-simple-lightweight-and-have-minimal-depen –

Respuesta

6

Hay enlaces Python para cada juego de herramientas principal: GTK +, Qt, Tk, win32/MFC (no divertido de usar directamente), wx (que a su vez usa varios otros toolkits), Windows.Forms (a través de IronPython) .. . en resumen, sí, probablemente.

Si define exactamente qué aspecto debería tener "nativo" en qué plataforma, es probable que alguien le diga exactamente lo que desea. Mi kit de herramientas GUI favorito es GTK (usando PyGTK), que es nativo de Gnome y se ve muy bien para mí en Windows.

10

El aspecto "feo" de Windows 95 viene determinado por la versión de la biblioteca Common Dialog.

El suministro de un archivo de manifiesto con el ejecutable (probablemente la implementación de Python) hace que Windows use estilos visuales, en lugar del aspecto "feo".

Leer más aquí: http://msdn.microsoft.com/en-us/library/ms997646.aspx

+0

"Contenido eliminado" :(última versión del archivo: http://web.archive.org/web/20100512144953/http://msdn.microsoft.com/en-us/library/ms997646.aspx –

3

hay un montón de Python GUI libraries, entre las cuales, algunas ventanas de apoyo. Los mencionados aquí son WxPython, que a pesar de sus capturas de pantalla de tipo Win95 can supportnative Windows widges. Además, como mencionó Mike Graham, existe soporte para la gran GTK + a través de PyWin, cuyo soporte de Windows realmente ha recorrido un largo camino, su Window's screenshots puede indicar hasta qué punto está bien integrado con la apariencia y el widget nativo. PyQt usa QT Toolkit, que también tiene buena compatibilidad con Windows, y, por supuesto, siempre existe la opción de using the Win32 wrappers para acceder directamente a las API GUI de Windows (aunque las API son bastante feas, que no son tanto los envoltorios como son las API de Win32; probablemente valga la pena seguir investigando si ya está familiarizado con las API de Windows).

dos opciones más, algo más sacarlo de la caja, que incluiría dejando detrás CPython y el aprovechamiento de IronPython (que se ejecuta en el tiempo de ejecución de .NET y por lo tanto tiene acceso a Windows.Forms, o, para ser muy obtuso Gtk# a través de mono) y Jython (que se ejecuta en JVM y puede aprovechar el bastante desordenado Swing, que tiene compatibilidad con widgets nativos de Windows o SWT, que admite widgets nativos de windows).

Entonces, en general, hay muchas opciones en Python para aprovechar la biblioteca nativa de Windows.

+1

No, es falta de uxtheme , no presencia de TkInter. –

+0

@ ignacio-vazquez-abrams Aceptaré lo que dices; he tendido a encontrar que, mientras que las aplicaciones TkInter usan controles nativos de ventanas de Windows (la parte exterior del marco) los widgets reales (botones y lo que no) se han renderizado en formas similares a bloques muy feas que recuerdan más a Win95 que a XP/Vista/Windows 7. Dicho esto, he usado PyGTK principalmente cuando necesito elementos GUI. – ig0774

+1

Tkinter 8.5 ha remediado esto con cu Estilos de widgets stom incluyendo temas nativos de windows, solo importa los widgets que desees de ttk en lugar de Tkinter (para obtener las nuevas versiones de ellos, sus interfaces difieren ligeramente, especialmente w.r.t. estilo, por lo que debe comenzar importando Tkinter y luego colocar widgets desde ttk en la parte superior). –

3

Sí, puede usar PyQt o PySide (otro enlace de Qt) o wxPython. Todos ellos admiten aspecto nativo & sentir.

También hay PyGTK, pero las aplicaciones GTK no hacer para buscar de manera nativa ..

yo personalmente prefiero Qt, por lo que me gustaría sugerir PyQt. Si tiene problemas con la GPL, puede usar PySide (LGPL).

+0

las versiones más recientes de Tkinter también admiten widgets nativos (las versiones anteriores también lo hacen, en menor medida). –

8

Usted (y el resto del mundo, realmente;)) debería echar un vistazo a PyGUI, por Greg Ewing. En sus propias palabras, es "un proyecto para desarrollar una API GUI pythonic multiplataforma". No solo eso, intenta generar GUI nativas en cada una de las tres plataformas principales.

Cuando lo revisé por última vez, hace más de un año, parecía estar muerto, pero ahora veo que hubo un nuevo lanzamiento en febrero de 2010, lo cual es una gran noticia.

Cuestiones relacionadas