Vala + Gtk3アプリの作成。 【前編】

後に 最初の投稿 「HelloWorld」よりも複雑なものから始めたほうがいいというコメントを読んでから、シーケンスを作成します(3または4)簡単なアプリケーションの作成を投稿します(vala + gtk 3を使用)。

アプリケーションは、3つの質問への回答が誤って終了する(ゲームオーバー)単純な多肢選択式の質問と回答のゲーム(トリビアタイプ)で構成され、目的は、限られた時間の質問ごとに、できるだけ多くの質問に回答することです。返信する。

デザイン

アプリケーションの主な設計は次のとおりです。

アプリ

後で、50%(XNUMXつの間違った答えを排除する)、フリーズ時間、質問に合格するオプションを提供するいくつかのボタンを配置します。 それらはすべて一度だけ使用でき、一度使用すると無効になります。

設計 コー​​ド
デザインでわかるように、使用するgtk要素を確認できます。

回答->ボタン。

質問->ラベル。

時間->プログレスバー。

間違った/正しいポイントと質問->ラベル。

垂直構造であることがわかります。したがって、GBoxを垂直に使用できます。

コー​​ド

int main(string [] args){Gtk.init(ref args); var window = new Gtk.Window(); window.title = "app"; window.window_position = Gtk.WindowPosition.CENTER; window.set_default_size(300、340); window.destroy.connect(Gtk.main_quit); window.set_border_width(10); //垂直ボックスvarbox = new Gtk.Box(Gtk.Orientation.VERTICAL、0); box.set_spacing(10); //質問のラベルvarquestion = new Gtk.Label( "Question?"); //タイムプログラムバーvartime_bar = new Gtk.ProgressBar(); timebar.set_text( "時間"); time_bar.set_show_text(true); //応答ボタンvarresponse1 = 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"); //ラベル情報varpoints = new Gtk.Label( "Points:0"); box.pack_start(質問); box.pack_start(time_bar); 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からキャプチャ

「時間」を移動するには、GLib.Timeoutを使用して、500ミリ秒ごとにアクティブにします(これは、バーの値を含む変数が増加するループです)。

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%がprogress <1.0;})を返すまで繰り返します。

興味のあるリンク 
http://www.valadoc.org/#!wiki=index (すべてのgtk要素とそのメソッドを見つけることができます...)


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   ロザノタックス

    非常に良いです、私はどのように私が一種のTABSを作ることができるかをあなたに尋ねます、しかしそれらは必ずしもタブである必要はありませんが、それらはボタンまたはトグルボタンであることができます、しかし私はタブの振る舞いが必要です、それはその内容に触れるときが表示され、他のタブが無効になっています。自分自身を説明するかどうかはわかりません。調査する情報を提供できるかどうかを確認するために画像を残します。 ありがとうございました!

    画像: http://i.imm.io/1jURw.png

    1.    ロンビンボ

      «レイアウト»またはテキストの変更(たとえば)?

  2.   パンデブ92

    カタロニア語parla

  3.   唖然

    これは非常に良いことです。実際、私が探していたものに似たものです。質問です。この質問は、何らかの方法で端末にリンクできますか?
    例:最初に、時間をかけて答えます。無制限のままにしておきます。それが私がやりたいことです。

    どのデスクトップ環境をインストールしますか?
    KDE
    Gnome 3
    にっき
    Unity

    そして、ターミナルのそれぞれのインストールコマンドにリンクされたこれらのそれぞれ、sudo apt-get install ubuntu-desktop

    1.    ロンビンボ

      はい、Process.spawn_command_line_async( "apt-get install ubuntu-desktop");を記述するだけです。

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

  4.   ソール・ウリベ

    素晴らしい、私は投稿が好きです、私は練習します(そして私は先に進むのを見ます)、挨拶