代码之家  ›  专栏  ›  技术社区  ›  Natascha

是否可以使用Jython的SWT?

  •  11
  • Natascha  · 技术社区  · 17 年前

    SWT图形用户界面看起来很不错。 Jython有没有一个简单的使用方法?

    3 回复  |  直到 17 年前
        1
  •  18
  •   Torsten Marek    17 年前

    考虑到可以使用Jython中的所有Java类,也可以使用SWT。

    例如,改编自 SWT snippet ,确保您的类路径上有SWT JAR:

    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()
    
        2
  •  9
  •   Peter Gibson    17 年前

    Jython还有其他一些使代码更清晰的细节。

    Jython自动将getter和setter转换为公共属性,以便

    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)
    
        3
  •  5
  •   gimel    17 年前

    实际上,不需要特殊的模块。 This talk 作者Sean McGrath包含一个Jython/SWT GUI的简单示例。

    演讲的幻灯片11开头是:

    """
    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可以直接从Jython获得。 这个 full example 就在肖恩的地盘上。