매우 간단하고 간결하며 쉬운 GUI 프로그래밍 "프레임 워크"
GUI 앱을 빠르게 작성할 수있는 GUI 프로그래밍 라이브러리, 툴킷, 프레임 워크를 나열하십시오 . 그런 의미에서
- GUI는 사람이 읽을 수있는 (그리고 사람이 쓸 수있는) 일반 텍스트 파일 (코드)로 완전히 설명됩니다.
- 코드는 간결하며 (위젯 / 이벤트 쌍당 1 줄 또는 2 줄의 코드) 스크립팅에 적합합니다.
- GUI의 구조 및 작동은 코드 (위젯 중첩 및 이벤트 흐름)에서 분명합니다.
- GUI를 구축하는 방법 에 대한 세부 정보 가 숨겨져 있습니다 (메인 루프, 이벤트 리스너 연결 등).
- 자동 레이아웃이 지원됩니다 (vbox, hbox 등).
답변에서 알 수 있듯이 이것은 선언적 GUI 프로그래밍 으로 정의 될 수 있지만 반드시 그런 것은 아닙니다. 작동하고 사용하기 쉽고 간결하면 모든 접근 방식이 괜찮습니다.
이와 같은 GUI 라이브러리 / 툴킷이 있습니다. 아래에 나열되어 있습니다. 적격 툴킷이 누락 된 경우 목록을 확장하십시오. 프로젝트가 크로스 플랫폼인지, 성숙하고, 활성 상태인지 표시하고 가능한 경우 예제를 제공합니다.
이 위키를 사용하여 오픈 소스 프로젝트 만 논의하십시오 .
다음은 지금까지의 목록입니다 (알파벳순).
퍼짓
Fudgets 는 Haskell 라이브러리입니다. 플랫폼 : 유닉스. 상태 : 실험적이지만 여전히 유지되고 있습니다. 예 :
import Fudgets
main = fudlogue (shellF "Hello" (labelF "Hello, world!" >+< quitButtonF))

(출처 : picamatic.com )
GNUstep 르네상스
르네상스 는 간단한 XML로 GUI를 설명 할 수 있습니다. 플랫폼 : OSX / GNUstep. 상태 : GNUstep의 일부입니다. 아래 예 :
<window title="Example">
<vbox>
<label font="big">
Click the button below to quit the application
</label>
<button title="Quit" action="terminate:"/>
</vbox>
</window>

(출처 : picamatic.com )
HTML
HTML 기반 GUI (HTML + JS). 성숙한 크로스 플랫폼. 클라이언트 측에서 전적으로 사용할 수 있습니다.
멋진 "helloworld"예제를 찾고 있습니다.

(출처 : picamatic.com )
JavaFX
JavaFX 는 웹 응용 프로그램뿐 아니라 독립 실행 형 (데스크톱) 응용 프로그램에도 사용할 수 있습니다. 완전히 크로스 플랫폼이 아니며 아직 완전히 오픈 소스가 아닙니다. 상태 : 1.0 릴리스. 예 :
Frame {
content: Button {
text: "Press Me"
action: operation() {
System.out.println("You pressed me");
}
}
visible: true
}
스크린 샷이 필요합니다.
푸이
Phooey 는 또 다른 Haskell 라이브러리입니다. 크로스 플랫폼 (wxWidgets), HTML + JS 백엔드 계획. 성숙하고 활동적입니다. 예 (helloworld보다 조금 더) :
ui1 :: UI ()
ui1 = title "Shopping List" $
do a <- title "apples" $ islider (0,10) 3
b <- title "bananas" $ islider (0,10) 7
title "total" $ showDisplay (liftA2 (+) a b)

(출처 : picamatic.com )
PythonCard
PythonCard 는 Python 사전에서 GUI를 설명합니다. 크로스 플랫폼 (wxWidgets). 일부 앱에서 사용하지만 프로젝트가 중단 된 것 같습니다. 활성 포크가 있습니다.
대회에 너무 장황하기 때문에 PythonCard 예제를 건너 뜁니다 .

(출처 : picamatic.com )
신발
루비 신발 . 플랫폼 : Win / OSX / GTK +. 상태 : 젊지 만 활동적입니다. 최소 앱은 다음과 같습니다.
Shoes.app {
@push = button "Push me"
@note = para "Nothing pushed so far"
@push.click {
@note.replace "Aha! Click!"
}
}

(출처 : picamatic.com )
Tcl / Tk
Tcl / Tk . 크로스 플랫폼 (자체 위젯 세트). 성숙하고 (아마도 날짜가 지남) 활동적입니다. 예 :
#!/usr/bin/env wish
button .hello -text "Hello, World!" -command { exit }
pack .hello
tkwait window .

(출처 : picamatic.com )
tekUI
Lua (및 C) 용 tekUI . 플랫폼 : X11, DirectFB. 상태 : 알파 (사용 가능하지만 API는 계속 발전 함). 예 :
#/usr/bin/env lua
ui = require "tek.ui"
ui.Application:new {
Children = {
ui.Window:new {
Title = "Hello",
Children = {
ui.Text:new {
Text = "_Hello, World!", Style = "button", Mode = "button",
},
},
},
},
}:run()

(출처 : picamatic.com )
트리톤
Treethon for Python. It describes GUI in a YAML file (Python in a YAML tree). Platform: GTK+. Status: work in proress. A simple app looks like this:
_import: gtk
view: gtk.Window()
add:
- view: gtk.Button('Hello World')
on clicked: print view.get_label()
Yet unnamed Python library by Richard Jones:
This one is not released yet. The idea is to use Python context managers (with keyword) to structure GUI code. See Richard Jones' blog for details.
with gui.vertical:
text = gui.label('hello!')
items = gui.selection(['one', 'two', 'three'])
with gui.button('click me!'):
def on_click():
text.value = items.value
text.foreground = red
XUL
XUL + Javascript may be used to create stand-alone desktop apps with XULRunner as well as Mozilla extensions. Mature, open source, crossplatform.
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="main" title="My App" width="300" height="300"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<caption label="Hello World"/>
</window>

(source: picamatic.com)
Thank your for contributions!
Not to kid, but HTML.
It's cross-platform, and sums up the gui-layout in a simple textfile. It's definitely mature, as well as well-understood and well documented.
There's a bunch of ways to template HTML files for dynamic content, and other ways to convert custom syntaxes to HTML if you dislike angle-brackets.
Client-side scripting w/ Javascript, server-side scripting with PHP/Ruby/Python/Perl.
It's not well suited for all purposes, but for many, it's good enough. There's no reason that it has to be served either - you can distribute a HTML file to your clients if you want - see TiddlyWiki for a good example of where that can go.
What you're describing is, with the exception of shoes, the new-fangled notion of declarative programming. I'd describe shoes more as a GUI Domain-Specifc Language. Well, I say new-fangled: Visual Basic forms, if you looked behind the IDE designer, were declarative. So, going further back still, were Oracle's SQL*Forms, although assembling them with a text editor was a process only to be be undertaken by the very bravest.
To add another to the list, Microsoft have XAML which, among other things, describes GUIs built for the WPF.
Although some of the schemes mentioned are fairly simple, declaratively-defined GUIs can be as complex as anything defined in code, they're just easier and terser: they say "what" you want to happen and leave it to the underlying framework to handle the "how".
TCL/TK is a script language used for building GUI interactively. It is available on various platforms including Unix, Windows and Mac OS X.
Pyjamas - http://pyjs.org - it's a desktop widget set, disguised as an AJAX-based web 2.0 widget set. it's so very much NOT like a web widget set that i actually ported it to the desktop - http://pyjd.org - using webkit (the same engine in adobe AIR, google chrome, safari etc.)
this is "hello world":
from pyjamas.ui.RootPanel import RootPanel
from pyjamas.ui.Button import Button
from pyjamas import Window
def greet(fred):
Window.alert("Hello, AJAX!")
if __name__ == '__main__':
b = Button("Click me", greet)
RootPanel().add(b)
that immediately answers the first four out of five requirements. requirement 5 is fulfilled by this:
from pyjamas.ui.RootPanel import RootPanel
from pyjamas.ui.HorizontalPanel import HorizontalPanel
from pyjamas.ui.HTML import HTML
p = HorizontalPanel()
p.add(HTML("<b>Hello</b>"))
p.add(HTML("World"))
RootPanel().add(p)
it couldn't get any simpler.
XUL (it's pretty easy to use, and powerful -- much of Firefox is implemented using XUL for GUI structure, + javascript for logic handling)
The XUL tutorial has some good examples. Here's one for tabboxes. The one at the bottom of the page has switchable tabs, buttons, edit boxes, and group boxes, and it's fairly simple (no Javascript/CSS/XBL/key bindings/etc). They then add progressively more stuff later which is a lot of functionality for the length of the file that specifies it. (at least until you start adding javascript to handle the logic in question) If I had to do something like this in Win32 it would be a real pain.
wxLua is a wrapper of the wxWidgets library for Lua. It uses a Connect method to attach gui widget events to functions (functions are first class like in JS).
GTK-server 는 사용이 매우 간단하며 Bash 및 Visual Basic을 포함하여 30 개 이상의 언어에서 사용할 수 있습니다.
SDL / Swing 은 매우 간결하고 읽기 쉽고 눈에 잘 띄지 않으며 (종속성이없는 283k lib) 사용하기 쉽습니다. 예:
menus {
"File" {
"Open" do="open" // calls "open()" in the controller
"---"
"Exit" do="exit"
}
}
오픈 소스이지만 Ikayzo.com의 상업적 지원을 누리고 있습니다. .NET 및 iOS 용 포트가 진행 중입니다.
오늘 SDL / Swing을 접했습니다 .
.NET 플랫폼을 사용하는 경우 XAML을 살펴 봐야합니다.
참고 URL : https://stackoverflow.com/questions/470468/very-simple-terse-and-easy-gui-programming-frameworks
'Program Club' 카테고리의 다른 글
| App Engine 스케줄러는 언제 새 스레드와 새 인스턴스를 사용하나요? (0) | 2020.12.05 |
|---|---|
| C ++에서 64 비트 정수에 대한 "표준"htonl과 유사한 함수가 있습니까? (0) | 2020.12.05 |
| Green DAO vs ORM lite vs Active Android (0) | 2020.12.05 |
| 개발중인 Docker 컨테이너에서 코드를 편집하는 방법은 무엇입니까? (0) | 2020.12.05 |
| matplotlib : AxesSubplot 객체를 생성 한 다음 Figure 인스턴스에 추가 할 수 있습니까? (0) | 2020.12.05 |