创建一个Vala + Gtk3应用程序。 [第一部分]

之后 第一篇文章 我读到一条评论,即从比“ hello world”更复杂的东西开始会更好,然后我将做一个序列(3或4)后创建一个简单的应用程序(使用vala + gtk 3)。

该应用程序将包含一个简单的多选问答游戏(Trivia类型),其中错误回答3个问题(游戏结束),并且目标是回答尽可能多的问题,每个问题都有一个回复时间有限。

设计

我们的应用程序的主要设计将是:

应用

稍后,我们将放置一些按钮,这些按钮将为我们提供50%(消除两个错误答案),冻结时间,通过问题的选项。 它们全部只能使用一次,一旦使用则被禁用。

设计一个 
正如我们在设计中看到的,我们可以看到将要使用的gtk元素:

答案->按钮。

问题->标签。

时间-> ProgressBar。

错误/正确的观点和问题->标签。

我们可以看到我们具有垂直结构,因此可以垂直使用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); //垂直框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”); time_bar.set_show_text(true); //响应按钮var response1 =新的Gtk.Button.with_label(“ Response 1”); var resposta2 =新的Gtk.Button.with_label(“回复2”); var resposta3 =新的Gtk.Button.with_label(“回复3”); var resposta4 =新的Gtk.Button.with_label(“回复4”); //标签信息var points = 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:14捕获

要移动“时间”,我们使用GLib.Timeout,每500毫秒将被激活一次(这是一个循环,其中包含我们柱的值的变量将增加)

GLib.Timeout.add(500,()=> {//获取当前进度://(0.0-> 0%; 1.0-> 100%)double progress = time_bar.get_fraction(); //更新进度条:进度=进度+ 0.01; time_bar.set_fraction(进度); //重复直到100%返回进度<1.0;});

感兴趣的链接 
http://www.valadoc.org/#!wiki=index (您可以使用其方法找到所有gtk元素...)


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   洛扎诺

    很好,我将问您如何制作一种TABS,但如何垂直制作,虽然它们不一定必须是选项卡,它们可以是按钮或ToggleButtons,但是我需要选项卡的行为,即在触摸1时可以看到其内容并另一个选项卡被禁用,我不知道我是否解释自己,我留下图像来查看您是否可以给我一些信息以进行调查。 谢谢!

    IMAGE: http://i.imm.io/1jURw.png

    1.    洛宾博

      “布局”或文本更改(例如)?

  2.   潘德夫92

    加泰罗尼亚语

  3.   目瞪口呆

    实际上,这非常好,这与我在寻找的问题类似,可以以某种方式将此问题链接到终端吗?
    例如:首先,我花时间回答,我将其无限使用,这就是我想要做的。

    您要安装什么桌面环境?
    KDE
    侏儒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.   乌里韦(Saul Uribe)

    太好了,我喜欢这个职位,我会继续练习(并且我很期待),问候