Креирање апликације (Вала + ГТК 3) [3. део]

У овом делу видећемо како да креирамо још један прозор и дизајнирамо га са ГТК. Видећемо и неке функционалности као што су додавање питања и коришћење три тастера (50%, замрзавање и додавање).

ТоолБар и ТоолБуттон

Направите траку са алаткама:

аппКСНУМКС

Стварајући ТоолБуттон, у овом случају ћемо ставити икону (подразумевано можете пронаћи много икона овде) са «фром_стоцк (Гтк.Стоцк.ИцонНаме):

Снимка из 2013-12-07 23:26:52

Видимо да у нашој апликацији имамо траку са два дугмета на врху, где ћемо прво користити за креирање нових питања, а друго за увоз питања (кроз датотеку):

Снимка из 2013-11-08 00:30:32

Креирање питања:
Дугме које смо претходно креирали (на траци са алаткама) када кликнемо на њега, отворићемо нови гтк прозор који ће нам омогућити да додамо питања у нашу базу података:

аппКСНУМКС

Да бисмо креирали нови прозор, креираћемо нову класу, коју ћемо назвати Питања, и како ће наша класа Апп створити нови прозор (тхис.виндов = нев Гтк.Виндов ();)

Користићемо неколико компонената за прављење графичког интерфејса по реду;

-Етикета (питања)

- Унос (где ћемо написати питање)

-Ознака (одговори)

- 4 хоризонтална поља која ће садржати унос (одговор) и прекидач (да бисте изабрали да ли је тачан)

-Буттон (за довршетак)

Можемо видети како то изгледа:

Снимка из 2013-12-08 01:07:08

Да бисмо сачували питање, мораћемо да добијемо текст уноса, они се добијају помоћу гет_тект () који враћа низ.

аппКСНУМКС

Да бисмо знали да ли је комутатор активан, можемо користити његову методу гет_ацтиве () који враћа труе ако је укључен и фласе ако је искључен.

 50%, тастери за замрзавање и додавање:

 -педесет%:

За 50% морамо само да погледамо које је исправно дугме и уклонимо 2 која нису тачна, у овом случају их отказујемо са сет_сенситиве (фалсе).

аппКСНУМКС

Резултат:

аппКСНУМКС

-Фреезе:

Поново смо поставили траку на 0.

тхис.тиме_бар.сет_фрацтион (0);

-Пасс:

button3.clicked.connect (() => {
this.bd_select_preguntas ();
this.next_pregunta();
});

 Следећи део (4):

У следећем делу видећемо како да побољшамо аспекте наше апликације, на пример да се питања не појављују увек на истом положају, ставимо икону у апликацију ...


Оставите свој коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. За податке одговоран: Мигуел Ангел Гатон
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.

  1.   Ф3ниКс дијо

    Волим одговоре ... хаха .. Поздрав

  2.   панцхомора дијо

    Одлични су ови чланци о вали .. Надам се осталима .. поздрав

  3.   цр0т0 дијо

    Чекам ваш улазак на Вала, надам се да ће бити доста испорука. Живели!

  4.   пптру дијо

    Леп чланак, хвала на подели.

  5.   Хирам дијо

    Здраво,

    Пратио сам ваше претходне уносе за стварање ове апликације, проблем долази сада када покушавам да приступим уносима новог прозора, чиним то на овај начин, у методи савеЦ класе цреатеКуестионс (класе која креира прозор) .

    јавна воид савеЦ () {
    стринг стр = куестионЕ.гет_тект ();
    стдоут.принтф ("Уговор% с \ н", стр);
    }

    Али на излазу добијам ово:
    (бу: 6196): Гтк-ЦРИТИЦАЛ **: гтк_ентри_гет_тект: тврдња `ГТК_ИС_ЕНТРИ (унос) 'није успела

    Уговор (нулл)

    Видео сам неколико примера и у дефиницији метода које приступају уносима чине нешто овако:

    воид он_ацтивате (Гтк.Ентри ентри) {
    наме = ентри.гет_тект ();
    принт ("\ нЗдраво" + име + "! \ н \ н");
    }

    Али они имају само један унос, а у овом примеру их је 5, тако да сам се овде већ изгубио, могли бисте ме боље усмерити.

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

      Па, када креирате уносе, не дајете им исто име, да бисте добили текст који имају:

      р1 = ентри1.гет_тект ();
      р2 = ентри2.гет_тект ();
      р3 = ентри3.гет_тект ();
      р4 = ентри4.гет_тект ();

      Ако желите, ставите пастебин и ја ћу га погледати

      1.    Хирам дијо

        лолбимбо ако их у ствари имам са различитим именима, али користим само једно за тестове, јер нико од њих не враћа текст који сам ставио у унос, шаље ми горе поменуту грешку:

        Али на излазу добијам ово:
        (бу: 6196): Гтк-ЦРИТИЦАЛ **: гтк_ентри_гет_тект: тврдња `ГТК_ИС_ЕНТРИ (унос) 'није успела

        Уговор (нулл)

        Још истражујем ...

        Живели.!!

      2.    Хирам дијо

        Спреман је извор, поздрав.
        http://pastebin.com/pZG8GbrY

    2.    лолбимбо дијо

      Здраво, Хирам, слушај, рећи ћу ти како то треба да урадиш, да се то реши, прво што се то догоди јер креирамо нови прозор (није главни), а када позивамо унос, ( извињавам се на речима) Не знам зашто се то срање не враћа као да је унос већ виџет, али хеј, да бисте га решили, морате само да промените све статичке компоненте које сте креирали у динамичке помоћу вар:

      вар куестионЕ = нев Гтк.Ентри ();

      тада ће функција функционисати и добићете текст унутар уноса.

      саве.цлицкед.цоннецт (() => {
      // стринг стр = тхис.куестионЕ.гет_тект ();
      стдоут.принтф ("Уговор% с \ н", аскЕ.гет_тект ());
      });

      И на крају, не заборавите да промените линију у коју додате унос како би се приказао:

      аскЕ.схов ();

      Остављам вам комплетан код са изменама како бисте могли да проверите да ли већ ради, односно ако морате да промените све елементе (барем уносе) да бисте наставили са апликацијом.

      http://paste.desdelinux.net/5048

      поздрави

      1.    Хирам дијо

        Цхале, овде се опет мучим, и даље имам проблема, код који ми покажеш је у реду, само се нешто догоди у случају:

        саве.цлицкед.цоннецт (() => {
        // стринг стр = тхис.куестионЕ.гет_тект ();
        стдоут.принтф ("Уговор% с \ н", аскЕ.гет_тект ());
        });

        Налази се унутар класе Питања и у реду је, али када жели да уђе из савеЦ, не компајлира се, већ ми доноси ову грешку:

        бу01.вала: 50.38-50.50: грешка: Аргумент 1: Није могуће претворити из `Куестион.савеЦ 'у` Гтк.Буттон.цлицкед'
        тхис.гуардар.цлицкед.цоннецт (тхис.гуардарЦ);
        ^^^^^^^^^^^^^^^
        бу01.вала: 251.58-251.66: упозорење: Гтк.Стоцк је застарео од 3.10
        бу01.вала: 260.59-260.67: упозорење: Гтк.Стоцк је застарео од 3.10
        Компилација није успела: 1 грешка (е), 2 упозорење (а)

        Желим да мислим да је то због начина на који преносим параметар када се догоди клик:
        тхис.гуардар.цлицкед.цоннецт (тхис.гуардарЦ);

        Хвала унапред на повратним информацијама; овде остављам код који баца грешку: http://pastebin.com/pLzExhrb

      2.    лолбимбо дијо

        Нисам га тестирао, али мислим да ће га уклањање аргумента из функције бацити.

        јавна празнина савеЦ (Гтк.Ентри питаЕ) {
        стринг стр = куестионЕ.гет_тект ();
        стдоут.принтф ("Уговор% с \ н", стр);
        }

        a:
        јавна воид савеЦ () {
        стринг стр = куестионЕ.гет_тект ();
        стдоут.принтф ("Уговор% с \ н", стр);
        }

      3.    Хирам дијо

        лолбимбо, покушао сам да уклоним аргумент и даље не успева,

        Још увек покушавам да схватим проблем, нови сам у Вали и не могу да нађем пуно документације, надам се да ћу ускоро пронаћи решење или да чекам да објавите четврти део кД.

        Покушавам и даље ...

        Поздрав.