Vala + Gtk3 қосымшасын құру. [1-бөлім]

Кейін бірінші жазба Мен «сәлем әлемінен» гөрі күрделі нәрседен бастаған дұрыс болар деген пікір оқыдым, содан кейін мен тізбекті жасаймын (3 o 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 = «қосымша»; 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 = жаңа Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // var question = new сұрағына арналған жапсырма Gtk.Label («Сұрақ?»); // прогрессивті уақыт жолағы var time_bar = new Gtk.ProgressBar (); time_bar.set_text («Уақыт»); time_bar.set_show_text (шын); // Жауап батырмалары var response1 = new Gtk.Button.with_label («Жауап 1»); var resposta2 = жаңа Gtk.Button.with_label («Жауап 2»); var resposta3 = жаңа Gtk.Button.with_label («3-жауап»); var resposta4 = жаңа Gtk.Button.with_label («4-жауап»); // labels info var points = new Gtk.Label («Ұпайлар: 0»); box.pack_start (сұрақ); box.pack_start (уақыт_бары); box.pack_start (жауап1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (ұпайлар); window.add (box); 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%) екі еселенген прогресс = time_bar.get_fraction (); // Жолақты жаңарту: прогресс = прогресс + 0.01; уақыт_бары.сет_фракциясы (прогресс); // 100% қайтару прогресі болғанша қайталаңыз <1.0;});

Қызықтыратын сілтемелер 
http://www.valadoc.org/#!wiki=index (барлық gtk элементтерін олардың әдістерімен таба аласыз ...)


Мақаланың мазмұны біздің ұстанымдарымызды ұстанады редакторлық этика. Қате туралы хабарлау үшін нұқыңыз Мұнда.

6 пікір, өз пікіріңізді қалдырыңыз

Пікіріңізді қалдырыңыз

Сіздің электрондық пошта мекен-жайы емес жарияланады. Міндетті өрістер таңбаланған *

*

*

  1. Деректерге жауапты: Мигель Анхель Гатан
  2. Деректердің мақсаты: СПАМ-ны басқару, түсініктемелерді басқару.
  3. Заңдылық: Сіздің келісіміңіз
  4. Деректер туралы ақпарат: заңды міндеттемелерді қоспағанда, деректер үшінші тұлғаларға жіберілмейді.
  5. Деректерді сақтау: Occentus Networks (ЕО) орналастырған мәліметтер базасы
  6. Құқықтар: Сіз кез-келген уақытта ақпаратты шектей, қалпына келтіре және жоя аласыз.

  1.   лозанотукс дижо

    Өте жақсы, сізден қалайша табуляторларды жасай аламын, бірақ тігінен, бірақ олар міндетті түрде қойындылар болмауы керек, бірақ олар батырмалар немесе ToggleButtons болуы мүмкін, бірақ маған қойындының әрекеті керек, оның 1 мазмұнын түрткенде және басқа қойынды өшірілген, мен өзімді түсіндіріп жатқанымды білмеймін, сіз маған тергеу үшін біраз ақпарат бере аласыз ба, жоқ па, соны кескінмен қалдырамын. Рақмет сізге!

    Кескін: http://i.imm.io/1jURw.png

    1.    лолбимбо дижо

      «Макет» немесе мәтін өзгерді (мысалы)?

  2.   92 дижо

    Каталон парла

  3.   аң-таң дижо

    Бұл өте жақсы, іс жүзінде бұл мен іздеген нәрсеге ұқсас, сұрақ, бұл сұрақты терминалмен қандай-да бір байланыстыруға бола ма?
    Мысалы: Мен жауап беру үшін уақыт бөлемін, мен оны шектеусіз қалдырамын, мен солай жасағым келеді.

    Сіз жұмыс үстелінің қандай ортасын орнатқыңыз келеді?
    KDE
    Gnome 3
    Даршын
    бірлік

    Және олардың әрқайсысы терминалдағы орнату пәрменімен байланысты 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.   Саул Урибе дижо

    Өте жақсы, маған пост ұнайды, мен жаттығу жасаймын (және алға ұмтыламын), сәлемдесу