2013-01-03 12 views
37

Qualcuno sa di un'app di progettazione GUI che consente di scegliere/trascinare/rilasciare i widget e quindi trasformare quel layout in codice Python con le chiamate appropriate di Tkinter & utilizzando il gestore di geometrie grid? Finora ho trovato un paio di opzioni carine che potrei usare, ma generano codice usando pack o place.Esiste un'app di progettazione GUI per la geometria Tkinter/griglia?

Prima che tu dica: Sì, so che Tkinter è facile da imparare, e sì, ho trovato più fonti online per aiutarmi a farlo, e sono già sulla mia strada. Non si tratta di evitare lo sforzo di apprendimento, si tratta di utilizzare lo strumento giusto per il lavoro. Ho scoperto molto tempo fa che quegli ambienti di widget drag-and-drop per la logica del programma di codifica, sono troppo klunky e ingestibili quando il progetto va oltre una certa dimensione - per cose più grandi, è più semplice costruire e mantenere la logica quando è in chiaro. Più recentemente ho scoperto che è vero il contrario per la progettazione di una GUI. Scrivere testo funziona fino a un certo punto, ma quando si ha una finestra principale con 30 o 40 widget, più un paio di finestre laterali con una complessità simile, diventa molto più veloce e più facile se si può progettare graficamente piuttosto che scrivere tutto .

+0

Le opzioni che ho già visto usano (come ho detto) sia 'pack' o' place', ma non entrambe. L'app di impaginazione perfetta IMO supporta il codice di generazione in uno dei tre gestori. Pagherei un bel po 'di soldi per ottenerlo. – JDM

risposta

23

Hai VisualTkinter noto anche come Visual Python. Lo sviluppo sembra non attivo. Hai siti sourceforge e googlecode. Sito Web is here.

D'altra parte, avete PAGE che sembra attivo e funziona in Python 2.7 e py3k

Come si indica il tuo commento, nessuno di questi utilizza la geometria grid. Per quanto posso dire, l'unico costruttore GUI che lo fa potrebbe probabilmente essere Komodo Pro GUI Builder che è stato interrotto e reso open source in ca. 2007. Il codice si trovava nello SpecTcl repository.

Sembra installare su win7 anche se non l'ha ancora usato. Questo è uno screenshot dal mio PC:

enter image description here

Tra l'altro, ha avuto anche Rapyd Tk piani per implementare la geometria della griglia come nella sua documentazione dice che non è pronto 'ancora'. Sfortunatamente sembra "quasi" abbandonato.

+0

Visual Tkinter e PAGE sono entrambe opzioni interessanti che potrei utilizzare, ma generano codice usando invece 'place'. Stavo cercando specificamente un'app che generi la geometria 'grid'. – JDM

+0

Grazie, ho perso questo durante la mia ricerca. Sta andando bene sulla mia macchina virtuale XP e genera layout basati su 'grid'. – JDM

+0

Rapyd Tk è stato rilasciato alla versione 1.0 ma è solo Python 2. Gli autori chiariscono a [link] (http://www.bitflipper.ca/rapyd/download.html) che non hanno intenzione di eseguire il porting su Python 3, quindi per me personalmente è una completa area no-go , YMMV. –

19

Lo strumento migliore per eseguire layout utilizzando la griglia, IMHO, è la carta millimetrata e una matita. So che stai chiedendo un tipo di programma, ma funziona davvero. Ho fatto programmazione Tk per un paio di decenni, quindi il layout mi viene abbastanza facilmente, eppure continuo a scartare la carta millimetrata quando ho una GUI complessa.

Un'altra cosa a cui pensare è questa: la vera potenza dei responsabili della geometria di Tkinter deriva dall'utilizzarli insieme *. Se decidi di utilizzare solo la griglia o solo la confezione, stai sbagliando. Invece, prima disegnare la GUI sulla carta, quindi cercare i modelli che sono meglio risolti da uno o l'altro. Pack è la scelta giusta per determinati tipi di layout e la griglia è la scelta giusta per gli altri. Per una serie di problemi molto piccoli, il posto è la scelta giusta. Non limitare il tuo pensiero all'utilizzo di uno solo dei responsabili della geometria.

* L'unico avvertimento per l'utilizzo di entrambi i gestori di geometria è che si dovrebbe usare solo uno per contenitore (un contenitore può essere qualsiasi widget, ma tipicamente sarà un frame).

+0

Grazie per il suggerimento relativo alla "visione a tunnel" nella scelta dei responsabili della geometria. Fino ad ora mi sono concentrato su 'grid' per semplificare il processo di apprendimento (ottenendo ancora il controllo dei widget stessi), ma man mano che apprendo meglio potrò probabilmente espandermi agli altri gestori. Il che, a sua volta, è il motivo principale per cui speravo di trovare un'app per il layout di 'grid'. Avevo programmato di utilizzare l'app di layout per ottenere rapidamente un taglio approssimativo, quindi modificare a mano il codice widget/layout risultante per mettere a punto i risultati. – JDM

+0

Ad un certo punto la tua risposta sembra indicare che/mixing/grid, pack e place è una buona cosa. Non è. – mmgp

+4

@mmgp: mixing pack e grid non sono solo ok, è probabilmente il modo migliore per ottenere un'interfaccia di qualità. Non penso di aver mai creato un'interfaccia in cui non li ho usati entrambi. L'unica regola è che non è possibile utilizzarli nello stesso contenitore; all'interno della app nel suo insieme non è solo possibile, penso che sia il modo preferito per lavorare. Ognuno ha punti di forza e di debolezza - sfruttare i punti di forza ed evitare i punti deboli. –

32

Oltre alle opzioni già fornite in altre risposte, esiste attualmente un progetto più attivo, recente e open source chiamato pygubu.

Questa è la prima descrizione dall'autore preso dal repository github:

Pygubu è uno strumento RAD per permettere pratica & veloce sviluppo di utente interfacce per il modulo pitone tkinter.

Le interfacce utente progettate vengono salvate come XML e, utilizzando il builder pygubu , possono essere caricate dinamicamente dalle applicazioni in base alle necessità. Pygubu è ispirato da Glade.


Pygubu hello world program è un video introduttivo che spiega come creare un primo progetto utilizzando Pygubu.

quanto segue in un'immagine dell'interfaccia dell'ultima versione di pygubu designer su un OS X Yosemite 10.10.2:

enter image description here

mi sarebbe sicuramente fare un tentativo, e contribuire al suo sviluppo.

Problemi correlati