2009-02-05 9 views

Antwort

18

Vorausgesetzt, dass Sie alle Java-Klassen aus Jython verwenden können, ist es auch möglich, SWT zu verwenden.

Für das Beispiel von einem SWT snippet angepasst, stellen Sie sicher, dass Sie das SWT Glas auf CLASSPATH haben:

import org.eclipse.swt as swt 
import org.eclipse.swt.widgets as widgets 
import org.eclipse.swt.layout as layout 

result = None 

display = widgets.Display() 

shell = widgets.Shell(display) 
shell.pack() 
shell.open() 

dialog = widgets.Shell(shell, swt.SWT.DIALOG_TRIM | swt.SWT.APPLICATION_MODAL) 
dialog.setLayout(layout.RowLayout()) 

ok = widgets.Button(dialog, swt.SWT.PUSH) 
ok.setText ("OK") 
cancel = widgets.Button(dialog, swt.SWT.PUSH); 
cancel.setText("Cancel"); 

class MyListener(widgets.Listener): 
    def handleEvent(self, event): 
     global result 
     result = event.widget == ok 
     dialog.close() 

listener = MyListener() 
ok.addListener(swt.SWT.Selection, listener) 
cancel.addListener(swt.SWT.Selection, listener) 

dialog.pack() 
dialog.open() 
while not dialog.isDisposed(): 
    if not display.readAndDispatch(): 
     display.sleep() 
print "Result:", result 
display.dispose() 
+0

Vielen Dank Torsten, es sieht sehr einfach aus. (Sorry, kann jetzt nicht upvote) – Natascha

+0

Ah, es wird nicht lange dauern, bis Sie das tun können. –

5

Eigentlich gibt es keine Notwendigkeit für ein spezielles Modul. This talk von Sean McGrath enthält ein einfaches Beispiel für eine Jython/SWT-GUI.

Folie 11 des Vortrags beginnt mit:

""" 
Simple SWT Example 
Sean McGrath 
""" 
from org.eclipse.swt.events import * 
from org.eclipse.swt.graphics import * 
from org.eclipse.swt.layout import * 
from org.eclipse.swt.widgets import * 
from org.eclipse.swt.layout.GridData import * 
from org.eclipse.swt import * 

Es zeigt, dass SWT von Jython direkt nutzbar ist. Die full example ist direkt bei Sean.

+0

an gimel: Danke! – Natascha

9

Jython hat ein paar andere Feinheiten, die den Code sauberer macht.

Jython übersetzt automagically Getter & Setter in öffentlichen Eigenschaften, so dass

ok.setText ("OK") 

einfach

ok.text = 'OK' 

Sie wird dann als benannte Argumente an den Konstruktor übergeben kann. Jython behandelt auch das Erstellen von Listener-Objekten für Ihre Event-Handler:

def handleEvent(self, event): 
    global result 
    result = event.widget == ok 
    dialog.close() 

ok = widgets.Button(dialog, swt.SWT.PUSH 
     text='OK', 
     widgetSelected=handleEvent) 
cancel = widgets.Button(dialog, swt.SWT.PUSH 
     text='Cancel', 
     widgetSelected=handleEvent) 
+0

Die „ok.text =‚Ok‘“ Form ist mehr idiomatische Jython (das heißt, es Pythonic ist - es sieht aus und fühlt sich eher wie Python-Code) –

Verwandte Themen