2009-06-24 21 views
5

Python ha un sacco di librerie GUI: Tkinter, wxWidgets, pyGTK ecc Ma tutto questo GUI deve essere installato e piuttosto pesante, quindi è un po 'complessa da implementare GUI utente finale applicazioni python che trasmettono su librerie GUI citati.Libreria GUI Python pura?

Recentemente, ho pensato ai ctypes incorporati in python. In teoria, è possibile creare una vera libreria GUI Python che userà i tipi in finestre (windll.user32.CreateWindowEx etc), pyObjC nativo su MacOS e pyGTK/pyQt su gnome/kde. Esiste una tale biblioteca? Altrimenti, come pensi che cosa c'è di sbagliato in un'idea?

+1

Tkinter non ha bisogno di essere installato, fa parte di una distribuzione standard di python. –

+0

Solo su Windows e MacOS. Deve essere installato su ubuntu, ecc. – grigoryvp

+0

Intendi qualcosa come "riscrittura wx in python"? Perché pensi che sarebbe meglio di ciò che è già stato fatto? – nosklo

risposta

10

Il percorso di minimo sforzo e risultati migliori sarebbe quello di apprendere ciò che serve per distribuire un'app utilizzando quelle librerie GUI esistenti.

+1

+1: "abbastanza pesante" è un'esagerazione. Nella maggior parte dei casi, è necessario tutto ciò per creare una GUI. –

2

Penso che si tratti di non inventare la ruota. Funzionerebbe, ma perché dovresti farlo? Tutte le librerie della GUI che hai menzionato sono stabili e più o meno resistenti ai proiettili.

Potrei immaginare che ci siano alcuni esperimenti che implementano una libreria Python pura. Ma non ne ho mai visto uno. Tutto ciò che riguarda le GUI è un lavoro duro e una pura libreria Python non avrebbe un pubblico così vasto.

3

Per prima cosa, tutte quelle librerie usano diverse astrazioni, quindi tutto ciò che ha lavorato con tutti loro è probabile, per concludere sostenere un insieme minimo comune denominatore di funzionalità, o fare un sacco di lavoro da utilizzare ogni al massimo.

4

Non proprio quello che intendi per "pesi massimi".

wx utilizza i controlli nativi su ciascuna piattaforma ed è facile da usare in Python come posso immaginare; dopo tutto, le API della GUI sono complesse perché le GUI possono diventare complesse.

Penso che wx, per lo sforzo richiesto per costruire una finestra e la qualità di ciò che appare sullo schermo, è grandioso. Non penso che tu possa tirar fuori qualcosa di meglio da solo.

8

Tkinter fa parte della distribuzione standard python ed è installato per impostazione predefinita. Aspettiamo di trovarlo su tutte le installazioni di Python dove c'è un display grafico in primo luogo.

+1

+1. Se hai bisogno di più widget, ci sono alcuni add-on e plugin per TKinter che sono leggeri e miglioreranno drasticamente il toolkit. Ma, comunque, l'interfaccia utente è brutta ... –

+6

Il commento "ui è brutto" si applica principalmente alle vecchie versioni di Tkinter. Modern Tk utilizza widget nativi su piattaforme che lo supportano. Al giorno d'oggi le terribili applicazioni di Tkinter riflettono principalmente il talento dei programmatori piuttosto che i limiti del toolkit. Per ulteriori informazioni su questa discussione, consultare http://stackoverflow.com/questions/349409/why-are-tk-guis-considered-ugly –

+1

Tkinter è installato di default solo su Windows e MacOS. Deve essere installato su ubuntu, ecc. – grigoryvp

5

La nozione di "libreria di gui python pura" è errata perché in definitiva si utilizzeranno chiamate e widget a livello di sistema, potrebbero essere attraverso i tipi di codice, ma ciò non cambia il fatto che se si inizia a implementare l'idea si diventa wxPython

5

Principalmente ciò che è sbagliato è che è reinventare le ruote che sono già stati fatti dai creatori di GTK, Tk, Wx, QT e loro simili. Mentre una pura GUI Python è tecnicamente fattibile, e progetti come anygui hanno tentato qualcosa di simile, c'è relativamente poco da guadagnare in questo modo.

I toolkit nativo anche fare un lavoro migliore di coprire le differenze tra le piattaforme sottostanti (finestre native etc.). Ciò significa che i toolkit ti permettono di scrivere un'applicazione portatile che ha bisogno di un codice piccolo o specifico della piattaforma - la maggior parte di questo è astratta dal toolkit sottostante.

I meccanismi di distribuzione come py2exe su Windows e uno qualsiasi dei metodi linux consentono di raggruppare DLL con l'applicazione, in modo da poter creare un programma di installazione che rimuova i componenti nativi di cui ha bisogno. Tuttavia, non esiste un modo generico multipiattaforma per farlo, quindi è necessario mantenere installatori separati per ciascuna piattaforma.

10

a partire da Python 2.7 e 3.1, Tk apparirà molto meglio.

http://docs.python.org/dev/whatsnew/2.7.html#ttk-themed-widgets-for-tk

"Tcl/Tk 8.5 include un insieme di widget a tema che re-implementare i widget di base Tk, ma hanno un aspetto più personalizzabile e può quindi più da vicino assomigliano widget della piattaforma nativa. Questo set widget è stato originariamente chiamato Tile, ma è stato rinominato in Ttk (per "themed Tk") in aggiunta a Tcl/Tck versione 8.5. "