У овом делу видећемо како да креирамо још један прозор и дизајнирамо га са ГТК. Видећемо и неке функционалности као што су додавање питања и коришћење три тастера (50%, замрзавање и додавање).
ТоолБар и ТоолБуттон
Направите траку са алаткама:
Стварајући ТоолБуттон, у овом случају ћемо ставити икону (подразумевано можете пронаћи много икона овде) са «фром_стоцк (Гтк.Стоцк.ИцонНаме):
Видимо да у нашој апликацији имамо траку са два дугмета на врху, где ћемо прво користити за креирање нових питања, а друго за увоз питања (кроз датотеку):
Креирање питања:
Дугме које смо претходно креирали (на траци са алаткама) када кликнемо на њега, отворићемо нови гтк прозор који ће нам омогућити да додамо питања у нашу базу података:
Да бисмо креирали нови прозор, креираћемо нову класу, коју ћемо назвати Питања, и како ће наша класа Апп створити нови прозор (тхис.виндов = нев Гтк.Виндов ();)
Користићемо неколико компонената за прављење графичког интерфејса по реду;
-Етикета (питања)
- Унос (где ћемо написати питање)
-Ознака (одговори)
- 4 хоризонтална поља која ће садржати унос (одговор) и прекидач (да бисте изабрали да ли је тачан)
-Буттон (за довршетак)
Можемо видети како то изгледа:
Да бисмо сачували питање, мораћемо да добијемо текст уноса, они се добијају помоћу гет_тект () који враћа низ.
Да бисмо знали да ли је комутатор активан, можемо користити његову методу гет_ацтиве () који враћа труе ако је укључен и фласе ако је искључен.
50%, тастери за замрзавање и додавање:
-педесет%:
За 50% морамо само да погледамо које је исправно дугме и уклонимо 2 која нису тачна, у овом случају их отказујемо са сет_сенситиве (фалсе).
Резултат:
-Фреезе:
Поново смо поставили траку на 0.
тхис.тиме_бар.сет_фрацтион (0);
-Пасс:
button3.clicked.connect (() => {
this.bd_select_preguntas ();
this.next_pregunta();
});
Следећи део (4):
У следећем делу видећемо како да побољшамо аспекте наше апликације, на пример да се питања не појављују увек на истом положају, ставимо икону у апликацију ...
Волим одговоре ... хаха .. Поздрав
Одлични су ови чланци о вали .. Надам се осталима .. поздрав
Чекам ваш улазак на Вала, надам се да ће бити доста испорука. Живели!
Леп чланак, хвала на подели.
Здраво,
Пратио сам ваше претходне уносе за стварање ове апликације, проблем долази сада када покушавам да приступим уносима новог прозора, чиним то на овај начин, у методи савеЦ класе цреатеКуестионс (класе која креира прозор) .
јавна воид савеЦ () {
стринг стр = куестионЕ.гет_тект ();
стдоут.принтф ("Уговор% с \ н", стр);
}
Али на излазу добијам ово:
(бу: 6196): Гтк-ЦРИТИЦАЛ **: гтк_ентри_гет_тект: тврдња `ГТК_ИС_ЕНТРИ (унос) 'није успела
Уговор (нулл)
Видео сам неколико примера и у дефиницији метода које приступају уносима чине нешто овако:
воид он_ацтивате (Гтк.Ентри ентри) {
наме = ентри.гет_тект ();
принт ("\ нЗдраво" + име + "! \ н \ н");
}
Али они имају само један унос, а у овом примеру их је 5, тако да сам се овде већ изгубио, могли бисте ме боље усмерити.
Па, када креирате уносе, не дајете им исто име, да бисте добили текст који имају:
р1 = ентри1.гет_тект ();
р2 = ентри2.гет_тект ();
р3 = ентри3.гет_тект ();
р4 = ентри4.гет_тект ();
Ако желите, ставите пастебин и ја ћу га погледати
лолбимбо ако их у ствари имам са различитим именима, али користим само једно за тестове, јер нико од њих не враћа текст који сам ставио у унос, шаље ми горе поменуту грешку:
Али на излазу добијам ово:
(бу: 6196): Гтк-ЦРИТИЦАЛ **: гтк_ентри_гет_тект: тврдња `ГТК_ИС_ЕНТРИ (унос) 'није успела
Уговор (нулл)
Још истражујем ...
Живели.!!
Спреман је извор, поздрав.
http://pastebin.com/pZG8GbrY
Здраво, Хирам, слушај, рећи ћу ти како то треба да урадиш, да се то реши, прво што се то догоди јер креирамо нови прозор (није главни), а када позивамо унос, ( извињавам се на речима) Не знам зашто се то срање не враћа као да је унос већ виџет, али хеј, да бисте га решили, морате само да промените све статичке компоненте које сте креирали у динамичке помоћу вар:
вар куестионЕ = нев Гтк.Ентри ();
тада ће функција функционисати и добићете текст унутар уноса.
саве.цлицкед.цоннецт (() => {
// стринг стр = тхис.куестионЕ.гет_тект ();
стдоут.принтф ("Уговор% с \ н", аскЕ.гет_тект ());
});
И на крају, не заборавите да промените линију у коју додате унос како би се приказао:
аскЕ.схов ();
Остављам вам комплетан код са изменама како бисте могли да проверите да ли већ ради, односно ако морате да промените све елементе (барем уносе) да бисте наставили са апликацијом.
http://paste.desdelinux.net/5048
поздрави
Цхале, овде се опет мучим, и даље имам проблема, код који ми покажеш је у реду, само се нешто догоди у случају:
саве.цлицкед.цоннецт (() => {
// стринг стр = тхис.куестионЕ.гет_тект ();
стдоут.принтф ("Уговор% с \ н", аскЕ.гет_тект ());
});
Налази се унутар класе Питања и у реду је, али када жели да уђе из савеЦ, не компајлира се, већ ми доноси ову грешку:
бу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
Нисам га тестирао, али мислим да ће га уклањање аргумента из функције бацити.
јавна празнина савеЦ (Гтк.Ентри питаЕ) {
стринг стр = куестионЕ.гет_тект ();
стдоут.принтф ("Уговор% с \ н", стр);
}
a:
јавна воид савеЦ () {
стринг стр = куестионЕ.гет_тект ();
стдоут.принтф ("Уговор% с \ н", стр);
}
лолбимбо, покушао сам да уклоним аргумент и даље не успева,
Још увек покушавам да схватим проблем, нови сам у Вали и не могу да нађем пуно документације, надам се да ћу ускоро пронаћи решење или да чекам да објавите четврти део кД.
Покушавам и даље ...
Поздрав.