SWT-Gui trông rất đẹp. Có cách nào dễ dàng để sử dụng nó trong Jython không?Có thể sử dụng SWT từ Jython không?
Trả lời
Cho rằng bạn có thể sử dụng tất cả các lớp Java từ bên trong Jython, bạn cũng có thể sử dụng SWT.
Ví dụ, chuyển thể từ một SWT snippet, hãy chắc chắn bạn có jar SWT trên classpath của bạn:
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()
Trên thực tế, không có nhu cầu về một mô-đun đặc biệt. This talk bởi Sean McGrath có một ví dụ đơn giản về GUI Jython/SWT.
Slide 11 của buổi nói chuyện bắt đầu với:
"""
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 *
Nó cho thấy rằng SWT là có thể sử dụng trực tiếp từ Jython. full example nằm ngay tại trang web của Sean.
để gimel: Cảm ơn bạn! – Natascha
Jython có một vài thành phần khác giúp làm sạch mã.
Jython Automagically dịch getters & setters vào tài sản công cộng để
ok.setText ("OK")
trở nên đơn giản
ok.text = 'OK'
Sau đó bạn có thể cung cấp cho họ như các đối số được ghi tên vào constructor. Jython cũng xử lý việc tạo đối tượng người nghe cho trình xử lý sự kiện của bạn:
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)
Biểu mẫu "ok.text = 'Ok'" là Jython thành ngữ hơn (có nghĩa là, nó có nhiều Pythonic hơn - nó trông và cảm thấy giống mã Python) –
- 1. Jython có GIL không?
- 2. sử dụng enums trong jython
- 3. Sử dụng Jython với M2Eclipse
- 4. Jython, chỉ sử dụng một phương thức từ Python từ Java?
- 5. Ubuntu: Ứng dụng SWT không thể tải Thư viện GTK
- 6. Xử lý ép chính sử dụng swt
- 7. SWT Không có thêm Handles
- 8. GUI cho ứng dụng độc lập Java. Tôi có nên sử dụng SWT hoặc GWT không?
- 9. Gọi Jython từ Python (hoặc Vice Versa)
- 10. Howto multithreaded jython script chạy từ java?
- 11. Jython nói "Không có nhà thầu có thể nhìn thấy cho lớp học"
- 12. Tôi có thể kết hợp SWT GridLayout và FillLayout
- 13. jython syntaxerror?
- 14. Có thể sử dụng scalap từ tập lệnh scala không?
- 15. Có một bản sao NumPy tốt cho Jython không?
- 16. Clojure Jython interop
- 17. Lập trình ứng dụng Android trong jython
- 18. Có cách nào tốt đẹp để trừu tượng GUI để SWT hoặc Swing có thể được sử dụng?
- 19. Cách sử dụng của Maven tycho-p2-plugin với SWT
- 20. Ngẫu nhiên trong Jython
- 21. Hidden Multithreading Bottlenecks trong Jython?
- 22. fast-ish python/jython IPC?
- 23. SWT: Cách tạo Nhóm không có đường viền?
- 24. Có thể sử dụng CSRF khi không có Cookie không?
- 25. Tại sao Jython từ chối tìm gói Java của tôi?
- 26. jython đa luồng
- 27. Có thể sử dụng Unicode "argv" không?
- 28. CSharpCodeProvider - Có thể sử dụng được không?
- 29. JAXB: Có thể sử dụng XmlAdapter không có @XmlJavaTypeAdapter không?
- 30. Có thể sử dụng Uri.Builder và không có phần "//" không?
Cảm ơn bạn Torsten, có vẻ rất dễ dàng. (Xin lỗi không thể upvote bây giờ) – Natascha
Ah, nó sẽ không mất nhiều thời gian cho đến khi bạn có thể làm điều đó. –