Jython: utilizzo della libreria Swing GUI
Una delle caratteristiche principali di Jython è la sua capacità di utilizzare la libreria Swing GUI in JDK. La distribuzione Standard Python (spesso chiamata CPython) ha l'estensioneTkinter GUI libraryspedito con esso. Altre librerie GUI comePyQt e WxPython sono disponibili anche per l'uso con esso, ma la libreria swing offre un toolkit GUI indipendente dalla piattaforma.
L'utilizzo della libreria swing in Jython è molto più semplice rispetto all'utilizzo in Java. In Java le classi anonime devono essere utilizzate per creare il binding di eventi. In Jython, possiamo semplicemente passare una funzione per lo stesso scopo.
La finestra di primo livello di base viene creata dichiarando un oggetto del JFrame classe imposta la sua proprietà visible su true. Per questo, la classe Jframe deve essere importata dal pacchetto swing.
from javax.swing import JFrame
La classe JFrame ha più costruttori con un numero variabile di argomenti. Useremo quello, che prende una stringa come argomento e la imposta come titolo.
frame = JFrame(“Hello”)
Imposta le proprietà di dimensione e posizione del frame prima di impostare la sua proprietà visible su true. Memorizza il codice seguente comeframe.py.
from javax.swing import JFrame
frame = JFrame("Hello")
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
frame.setLocation(100,100)
frame.setSize(300,200)
frame.setVisible(True)
Esegui lo script precedente dal prompt dei comandi. Verrà visualizzato il seguente output mostrando una finestra.
La libreria Swing GUI è fornita sotto forma di javax.swingpacchetto in Java. Le sue principali classi di contenitori,JFrame e JDialogderivano rispettivamente dalle classi Frame e Dialog, che si trovano nella libreria AWT. Altri controlli GUI comeJLabel, JButton, JTextField, ecc. sono derivati dalla classe JComponent.
La figura seguente mostra la gerarchia della classe del pacchetto Swing.
La tabella seguente riassume le diverse classi di controllo della GUI in una libreria swing:
Sr.No. | Classe e descrizione |
---|---|
1 | JLabel Un oggetto JLabel è un componente per posizionare il testo in un contenitore. |
2 | JButton Questa classe crea un pulsante etichettato. |
3 | JColorChooser Un JColorChooser fornisce un pannello di controlli progettato per consentire a un utente di manipolare e selezionare un colore. |
4 | JCheckBox Un JCheckBox è un componente grafico che può trovarsi in un file on (vero) o off stato (falso). |
5 | JRadioButton La classe JRadioButton è un componente grafico che può essere in uno stato on (true) o off (false). in un gruppo. |
6 | JList Un componente JList presenta all'utente un elenco a scorrimento di elementi di testo. |
7 | JComboBox Un componente JComboBox presenta all'utente un elenco a discesa di elementi |
8 | JTextField Un oggetto JTextField è un componente di testo che consente la modifica di una singola riga di testo. |
9 | JPasswordField Un oggetto JPasswordField è un componente di testo specializzato per l'immissione di password. |
10 | JTextArea Un oggetto JTextArea è un componente di testo che consente la modifica di più righe di testo. |
11 | ImageIcon Un controllo ImageIcon è un'implementazione dell'interfaccia Icon che disegna icone dalle immagini |
12 | JScrollbar Un controllo barra di scorrimento rappresenta un componente barra di scorrimento per consentire all'utente di selezionare da un intervallo di valori. |
13 | JOptionPane JOptionPane fornisce una serie di finestre di dialogo standard che richiedono agli utenti un valore o li informano di qualcosa. |
14 | JFileChooser Un controllo JFileChooser rappresenta una finestra di dialogo da cui l'utente può selezionare un file. |
15 | JProgressBar Man mano che l'attività procede verso il completamento, la barra di avanzamento mostra la percentuale di completamento dell'attività. |
16 | JSlider Un JSlider consente all'utente di selezionare graficamente un valore facendo scorrere una manopola all'interno di un intervallo limitato. |
17 | JSpinner Un JSpinner è un campo di input a riga singola che consente all'utente di selezionare un numero o un valore di oggetto da una sequenza ordinata. |
Useremo alcuni di questi controlli negli esempi successivi.