2009-02-05 2 views

답변

18

자이 썬에서 모든 Java 클래스를 사용할 수 있다면 SWT를 사용할 수도 있습니다.

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

Torsten에게 감사드립니다. 매우 쉽습니다. (죄송합니다 지금 upvote 수 없습니다) – Natascha

+0

아, 그렇게 할 수있을 때까지 오래 걸리지 않을 것입니다. –

5

는 사실, 특수 모듈에 대한 필요가 없습니다 : SWT snippet에서 적응 예를 들어

, 당신은 당신의 CLASSPATH에 SWT 항아리를 가지고 있는지 확인하십시오. Sean McGrath의 This talk에는 Jython/SWT GUI의 간단한 예제가 들어 있습니다.

""" 
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 * 

그것은 SWT는 자이 썬에서 직접 사용할 수 있는지 보여줍니다으로 이야기의

슬라이드 (11)가 시작됩니다. full example은 Sean의 사이트에 있습니다.

+0

to gimel : 고마워요! – Natascha

9

자이 썬에는 코드를 더 깨끗하게 해주는 몇 가지 좋은 점이있다.

ok.setText ("OK") 

당신은 다음 생성자로 명명 된 인수로 제공 할 수 있습니다

ok.text = 'OK' 

단지가되도록

자이 썬은 자동적으로 공용 속성에 게터에게 & 세터를 변환합니다. Jython은 또한 이벤트 처리기에 대한 리스너 객체를 생성합니다.

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

"ok.text = 'Ok'"양식은 자이 썬 (Jython)이 더 관례입니다 (Python 코드가 더 많아 파이썬 코드와 비슷합니다) –

관련 문제