x window programming에 대하여~(motif, Tk, Tcl)

mechkh의 이미지

Linux상에서 X windwo 프로그래밍을 하려고 합니다.
GUI를 구현하고 이런저런 기능을 갖는
프로그램을 작성하려고 하는데요...

GUI 를 구현하며 X window 플그래밍을 짜는데..
Xt와 motif를 이용하여 작성해보려고 합니다.
그런데 Tk, Tcl이라는 스크립트의 일종인...
저러한 것도 그런 프로그램을 작성할수 있더군요..

어떠한 차이점과 장단점이있는건지...
또 최근엔 어떠한 경향으루 흘러가는것인지...

뭐...알고 있으신것이 조금이라도 있으시다면
답변주시면 정말로 감사하겠습니다...

그리고 책을 빌려 Xlib Xt motif 를 이용하여
책과 같이..작성을 해보았는데요...
컴파일까지 다 되는데...실행이 되지를 않습니다.

X Error of failed request BadWindow(invalid window parameter)
Resource id in failed reques0x0
Serial number of failed request86

등등의 메시지가 뜨며 프로그램이 작동을 안하는군요..

아시는 분 답변주시면 정말정말 감사하겠습니당~ ^^

jinhoy의 이미지

음... 개인적으로는 저런 라이브러리 안쓰고 했음 좋겠는데요?

왜냐하면 너무 오래되었고 자료 구하기도 쉽지 않다는 거지요.

차라리 QT나 GTK+같은 걸 써보는 건 어떨까요? 훨씬 쓰기 좋고

기능도 많습니다.

아래 에러는 저도 겪었는데 원인을 모르겠어요.. 그러나 QT나 GTK+로

짜면 괜찮더군요. 물론 이들도 다 Motif나 Xt를 기반으로 하는 걸텐데요..

그리고 만약 Command 를 쳐서 실행할 수 있게 코딩을 해놨다면

Tck/Tk는 GUI만드는 좋은 해법이 될겁니다. 이른바 Front-end를

작성해 주는 것이지요. 이런 방식으로 Python도 쓸 수 있는 걸루 알

고 있습니다.

방법은 책들 참고하시면 되구요.

berise의 이미지

jinhoy wrote:

그러나 QT나 GTK+로
짜면 괜찮더군요. 물론 이들도 다 Motif나 Xt를 기반으로 하는 걸텐데요..

딴지는 아니지만, Qt와 gtk는 Motif 를 기반으로 하지 않습니다.
기반을 따진다면 아래 그림(?)과 같습니다.

X11 <- Xt <- ( Qt | gtk | Motif )

aeronova의 이미지

전 Qt를 좀 써봤는데,
(MFC등 딴 건 안써봤슴다.)

생각보단 Qt가 쉬운 거 같아요.
개념 잡기가요..

국내 한글로 된 책이 별로 없지만,
영어로 된 Document가 잘 되어 있으니까
이거 참고 하세요..

...Motif는 그래도 리눅스쪽 보단 유닉스 쪽에서
여전히 많이 쓰지 않을까 생각되네요.

참, 윗 분 말씀처럼 Qt는 Motif처럼 Xlib를 사용해서,
성능상 큰 차이는 없는 걸로 알고 있습니다.
(Qt 맹근 쪽이 이렇게 주장(?)하더군요.)

It's better to burn out than to fade away. -- Kurt Cobain.

ganadist의 이미지

Quote:

딴지는 아니지만, Qt와 gtk는 Motif 를 기반으로 하지 않습니다.
기반을 따진다면 아래 그림(?)과 같습니다.

X11 <- Xt <- ( Qt | gtk | Motif )

역시 딴지는 아니지만...

X11 <- (Qt|gtk+)
^
|
---- Xt <- Motif

일껍니다.

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

cjh의 이미지

다른 분들이 말씀하셨지만...

Xlib - Xt - Motif
               Athena
       - Qt
       - Gtk+
       - Tk

Xt(X Intrinsics)는 Xlib로 툴킷(GUI라이브러리)를 짜기가 어려워서 툴킷을 작성할 수 있는 레이어를 만든 것입니다. 이 Xt상에서 구성된 GUI라이브러리가 X 콘소시엄에서는 예제 구현으로 Athena(Xaw)를, 상용으로는 Motif(Xm)이 나와 있습니다.

다만 Xt도 충분히 복잡하고 X 리소스 관리 등등 여러가지 문제점이 많기 때문에 Xlib게 직접 기반하는 많은 GUI라이브러리가 나와 있습니다. 대표적인 것이 모두 알고 계시는 Qt, gtk+, Tk입니다. 이중 Tk는 Tcl언어를 위한 GUI 라이브러리로 개발된 것이지만 실제로는 Tcl과 직접 관련이 없는 관계로 다른 언어에서도 사용할 수 있습니다. e.g. python, perl, ruby 등. 또한 이들 라이브러리는 모두 X11/Win32/Mac에서도 사용할 수 있다는 점이 공통적입니다. Xt기반 라이브러리는 X11어플리케이션에서만 동작할 수 있습니다.

--
익스펙토 페트로눔

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.