Vala + Gtk3 앱 만들기. [1 부]

첫 번째 게시물 "hello world"보다 더 복잡한 것으로 시작하는 것이 더 낫다는 의견을 읽은 다음 시퀀스를 만들 것입니다 (O 3 4) 간단한 애플리케이션 생성 후 (vala + gtk 3 사용).

응용 프로그램은 간단한 객관식 질문 및 답변 게임 (트리 비아 유형)으로 구성되며, 3 개의 질문에 오답 (게임 종료) 답변이 끝나고 시간이 제한된 각 질문에 대해 최대한 많은 질문에 답변하는 것이 목표입니다. 댓글.

디자인

우리 응용 프로그램의 주요 디자인은 다음과 같습니다.

앱

나중에 우리는 50 % (오답 XNUMX 개 제거), 시간 고정, 질문 통과 옵션을 제공하는 몇 가지 버튼을 넣을 것입니다. 모두 한 번만 사용할 수 있으며 한 번 사용하면 비활성화됩니다.

디자인 암호
디자인에서 볼 수 있듯이 사용할 gtk 요소를 볼 수 있습니다.

답변-> 버튼.

질문-> 레이블.

시간-> ProgressBar.

틀린 / 정답 포인트 및 질문-> 라벨.

수직 구조를 가지고 있으므로 GBox를 수직으로 사용할 수 있습니다.

암호

int main (string [] args) {Gtk.init (ref args); var window = new Gtk.Window (); window.title = "앱"; window.window_position = Gtk.WindowPosition.CENTER; window.set_default_size (300, 340); window.destroy.connect (Gtk.main_quit); window.set_border_width (10); // 수직 상자 var box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // 질문에 대한 레이블 var question = new Gtk.Label ( "Question?"); // 진행 시간 막대 var time_bar = new Gtk.ProgressBar (); time_bar.set_text ( "시간"); time_bar.set_show_text (true); // 응답 버튼 var response1 = new Gtk.Button.with_label ( "Response 1"); var resposta2 = new Gtk.Button.with_label ( "응답 2"); var resposta3 = new Gtk.Button.with_label ( "응답 3"); var resposta4 = new Gtk.Button.with_label ( "응답 4"); // 레이블 정보 var points = new Gtk.Label ( "Points : 0"); box.pack_start (질문); box.pack_start (시간 _ 바); box.pack_start (reply1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (포인트); window.add (상자); window.show_all (); Gtk.main (); 반환 0;}

2013-11-02 21:44:14 캡처

"시간"을 이동하기 위해 500 밀리 초마다 활성화되는 GLib.Timeout을 사용합니다 (바 값을 포함하는 변수가 증가하는 루프입니다).

GLib.Timeout.add (500, () => {// 현재 진행률 가져 오기 : // (0.0-> 0 %; 1.0-> 100 %) double progress = time_bar.get_fraction (); // 바 업데이트 : progress = progress + 0.01; time_bar.set_fraction (progress); // 100 % return progress <1.0;}까지 반복합니다.

관심 링크 
http://www.valadoc.org/#!wiki=index (메소드로 모든 gtk 요소를 찾을 수 있습니다 ...)


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   Lozanotux

    아주 좋습니다. TABS 종류를 어떻게 만들 수 있는지 물어 보겠습니다. 세로로 꼭 탭일 필요는 없지만 버튼이나 ToggleButton이 될 수 있지만 탭의 동작이 필요합니다. 이 표시되고 다른 탭이 비활성화되어 있습니다. 내가 직접 설명하는지 모르겠습니다. 조사 할 정보를 제공 할 수 있는지 확인하기 위해 이미지를 남깁니다. 감사합니다!

    영상: http://i.imm.io/1jURw.png

    1.    Lolbimbo

      "레이아웃"또는 텍스트 변경 (예 :)?

  2.   판데브92

    카탈로니아 어 parla

  3.   기절

    이것은 사실 제가 찾던 것과 비슷한 질문입니다.이 질문이 어떤 식 으로든 터미널에 연결될 수 있습니까?
    예를 들면 : 시작하려면 시간을내어 대답을 무제한으로 남겨두면 제가하고 싶은 일입니다.

    어떤 데스크탑 환경을 설치 하시겠습니까?
    KDE
    그놈 3
    계피
    통일

    그리고 이들 각각은 터미널의 각각의 설치 명령에 링크되어 있습니다. sudo apt-get install ubuntu-desktop

    1.    Lolbimbo

      예, Process.spawn_command_line_async ( "apt-get install ubuntu-desktop");

      http://valadoc.org/#!api=glib-2.0/GLib.Process.spawn_command_line_sync

  4.   사울 우리베

    우수, 게시물이 마음에 들어 연습 할 것입니다 (그리고 기대합니다), 인사