Преглед садржаја
Постоје и други АПИ -ји које можете да користите креирајте ГУИ апликације у Питхону на пример КТ Десигнер који вам омогућава да креирате визуелне интерфејсе лепог изгледа, а затим кроз библиотеке ПиКт аутоматски генеришете потребан код интерфејса у Питхону помоћу команде пиуиц, шта је а УИ компајлер за КТ шта долази са тим ПиКт пакет.У овом водичу ћемо креирати визуелну апликацију за повезивање базе података Склите 3 и дефинисати функције за чување и приказ података.
Почећемо стварањем базе података у Склите -у. За ово можемо користити софтвер Склитеман који се може користити у било ком оперативном систему. Можемо га преузети и инсталирати да бисмо могли да управљамо базама података Склите верзије 3.
Затим идемо на мени Контекст> Креирај табелу и креирамо табелу производа.
КРЕИРАЈТЕ ТАБЕЛНЕ производе (ТЕКСТ НЕ НУЛЛ шифра, ТЕКСТ НЕ НУЛА производ, ТЕКСТ НИЈЕ НУЛА количина, ТЕКСТ НИ НУЛА цена)За програмирање у Питхону користићемо НетБеанс у овом водичу, биће нам потребан додатак који можемо да преузмемо са веб странице Нетбеанс Плугинс.
Схифт + ↓
Затим ћемо кликнути на дугме Инсталирај да активирамо додатак, а затим ћемо поново покренути НетБеанс.Имамо много својстава за конфигурисање сваког елемента, али у овом водичу ћемо користити најосновнија. Зато ћемо узети сваку ознаку и превући је на екран како бисмо је оставили у жељеном положају.
Затим ћемо ставити текстуалне оквире или ЛинеЕдит, сваком доделимо име тктЦоде, тктПродуцт, ткт Количина, тктПрице. То ће бити поља базе података са овим оквирима за текст које ћемо унети податке које ћемо затим сачувати.
Затим ћемо ставити 2 Тастер или дугмад један ће бити бтСаве за уметање података у базу података и друго бтУпдате да бисте ажурирали листу података.
Затим ћемо додати а таблеВидгет које ћемо такође морати да потражимо у левој колони, превучемо је на екран и дамо јој име тбл листа производа.
Затим чувамо датотеку као продуцтлист.уи. у фасцикли у којој се налази пројекат са којим смо креирали нетбеанс.
Отварамо прозор терминала из којег конвертујемо датотеку КТ листа производа.уи на питхон помоћу следеће команде:
пуиц4 продуцтлист.уи> продуцтлист.пиПитхон код дизајна ће бити следећи
# - * - кодирање: утф -8 - * - # Имплементација обрасца генерисана читањем датотеке корисничког интерфејса 'продуцтлист.уи' # # Направљено: нед 1. новембар 18:03:40 2015 # од: ПиКт4 УИ цоде генератор 4.10.4 # # УПОЗОРЕЊЕ! Све измене у овој датотеци ће бити изгубљене! из ПиКт4 унесите КтЦоре, КтГуи покушајте: _фромУтф8 = КтЦоре.КСтринг.фромУтф8 осим АттрибутеЕррор: деф _фромУтф8 (с): ретурн с три: _енцодинг = КтГуи.КАпплицатион.УницодеУТФ8 деф _трансамбигуи, транслате (цонтект, тект, дисамбиг, _енцодинг) осим АттрибутеЕррор: деф _транслате (цонтект, тект, дисамбиг): ретурн КтГуи.КАпплицатион.транслате (цонтект, тект, дисамбиг) цласс Уи_УИПродуцтс (објецт): деф сетупУи (селф, УИПродуцтс): УИПродуцтс.сетОбјецтНаме (_фромУтф8 ("УИПродуцтос")) УИПродуцтос.ресизе (497, 374) селф.централвидгет = КтГуи.КВидгет (УИПродуцтс) селф.централвидгет. селф.лблЦодиго.сетГеометри (КтЦоре.КРецт (20, 16, 56, 17)) селф.лблЦодиго.сетМакимумСизе (КтЦоре.КСизе (16777215, 17)) селф.лблЦодиго.сетТектФормат (КтЦоре.Кт) .ПлаинТект (КтЦоре.Кт). ) .ПлаинТект (КтЦоре.Кт) .ПлаинТект селф.лблЦодиго.сетОбјецтНаме (_фромУтф8 ("лблЦодиго")) селф.лблПрице = КтГуи.КЛабел (селф.централвидгет) селф.лблПрице.сетГео метри (КтЦоре.КРецт (260, 40, 56, 17)) селф.лблПрице.сетМакимумСизе (КтЦоре.КСизе (16777215, 17)) селф.лблПрице.сетОбјецтНаме (_фромУтф8 ("лблПрице")) селф.лблКуантити = КтГу (селф.централвидгет) селф.лблАмоунт.сетГеометри (КтЦоре.КРецт (20, 46, 56, 17)) селф.лблАмоунт.сетМакимумСизе (КтЦоре.КСизе (16777215, 17)) селф.лблАмоунт.сетОбјецтНаме (_фромУтф8 _фромУтф8 ("лбљецтЦан))) селф.тктЦоде = КтГуи.КЛинеЕдит (селф.централвидгет) селф.тктЦоде.сетГеометри (КтЦоре.КРецт (90, 10, 113, 27)) селф.тктЦодиго.сетОбјецтНаме (_фромУтф8" ) селф.тктПрице = КтГуи.КЛинеЕдит (селф.централвидгет) селф.тктПрице.сетГеометри (КтЦоре.КРецт (340, 40, 113, 27)) селф.тктПрице.сетОбјецтНаме (_фромУтф8 ("тктПрице")) селф.тктКуанти = .КЛинеЕдит (селф. Централвидгет) селф.тктАмоунт.сетГеометри (КтЦоре.КРецт (90, 40, 113, 27)) селф.тктАмоунт.сетОбјецтНаме (_фромУтф8 ("тктАмоунт")) селф.лине = КтГуи.КФраме (селф.централвид ) селф.лине. сетГеометри (КтЦоре.КРецт (20, 110, 461, 16)) селф.лине.сетФрамеСхапе ( КтГуи.КФраме.ХЛине) селф.лине.сетФрамеСхадов (КтГуи.КФраме.Сункен) селф.лине.сетОбјецтНаме (_фромУтф8 ("лине")) селф.бтСаве = КтГуи.КПусхБуттон (селф.централвЦетГет) .бтЦоретри (КтГетри) .КРецт (140, 80, 91, 27)) селф.бтСаве.сетМинимумСизе (КтЦоре.КСизе (91, 0)) селф.бтСаве.сетОбјецтНаме (_фромУтф8 ("бтСаве")) селф.бтУп .КПусх .Буттон (селф. Централвидгет) селф.бтУпдате.сетГеометри (КтЦоре.КРецт (250, 80, 101, 27)) селф.бтУпдате.сетМинимумСизе (КтЦоре.КСизе (101, 0)) селф.бтУпдате.сетОбјецтНаме (_ (") селфАцтуализе .лабел = КтГуи.КЛабел (селф.централвидгет) селф.лабел.сетГеометри (КтЦоре.КРецт (190, 130, 121, 17)) селф.лабел.сетОбјецтНаме (_фромУтф8 (" лабел ")) селф.лблПродуцт = КтГуи.КЛабел (селф.централвидгет) селф.лблПродуцт.сетГеометри (КтЦоре.КРецт (260, 10, 56, 21)) селф.лблПродуцто.сетМакимумСизе (КтЦоре.КСизе (16777215, 21)) селф.лблПроДуцт.сетО ("лблПродуцт")) селф.тктПродуцт = КтГуи.КЛинеЕдит (селф.централвидгет) селф.тктП продуцт.сетГеометри (КтЦоре.КРецт (340, 10, 113, 27)) селф.тктПродуцт.сетОбјецтНаме (_фромУтф8 ("тктПродуцт")) селф.таблеВидгет = КтГуи.КТаблеВидгет (селф.централвидгет) селф.таблеГометрија. КРецт (10, 170, 471, 131)) селф.таблеВидгет.сетВордВрап (Труе) селф.таблеВидгет.сетОбјецтНаме (_фромУтф8 ("таблеВидгет")) селф.таблеВидгет.сетЦолумнЦоунт (0) селф.таблеВидгет.сетРовЦоунт (0) УИПродуцтс. сетЦентралВидгет (селф.централвидгет) селф.менубар = КтГуи.КМенуБар (УИПродуцтс) селф.менубар.сетГеометри (КтЦоре.КРецт (0, 0, 497, 27)) селф.менубар.сетОбјецтНаме (_фромУтф8 ("менубардук)) (селф.менубар) селф.статусбар = КтГуи.КСтатусБар (УИПродуцтс) селф.статусбар.сетОбјецтНаме (_фромУтф8 ("статусбар")) УИПродуцтс.сетСтатусБар (селф.статусбар) : УИПродуцтс.сетВиндовТитле (_транслате ("УИПродуцтс", "Продуцт Лист", Ноне)) селф.лблЦодиго.сетТект (_транслате ("У ИПродуцтс "," Цоде ", Ноне)) селф.лблПрице.сетТект (_транслате (" ИПродуцтс "," Прице ", Ноне)) селф.лблКуантити.сетТект (_транслате (" УИПродуцтс "," Куантити ", Ноне)) селф. бтСаве.сетТект (_транслате ("УИПродуцтс", "Саве", Ноне)) селф.бтУпдате.сетТект (_транслате ("УИПродуцтс", "Упдате Лист", Ноне)) селф.лабел.сетТект (_транслате ("УИПродуцтс", " Листа производа ", нема)) селф.лблПродуцто.сетТект (_транслате (" УИПродуцтос "," Продуцт ", Ноне)) селф.таблеВидгет.сетСортингЕнаблед (Труе)Затим ћемо креирати другу датотеку за функционалност дизајна дефинисану у претходној:
из ПиКт4 увоз КтЦоре из ПиКт4 увоз КтГуи из ПиКт4.КтЦоре увоз * из ПиКт4.КтГуи увоз * из листе производа увоз Уи_ФрмПродуцтс увоз склите3 импорт системске класе ФрмПродуцтс (КтГуи.КМаинВиндов): деф __инит __ (__. парент__) Ништа __ (селф, парент) селф.уи = Уи_ФрмПродуцтс () селф.уи.сетупУи (селф) селф.уи.бтСаве.цлицкед.цоннецт (селф.Саве_цлицк) селф.уи.бтУпдате.цлицкед.цоннецт (селф.Упдате_цлицк) селф. Покрени базу података () селф.цонн = Ништа = селф .цонн.цурсор () цурсор.екецуте ("" "НАПРАВИ ТАБЕЛУ АКО НЕ ПОСТОЈЕ производи (ТЕКСТ НОТ НУЛЛ цоде, ТЕКСТ НОТ НУЛЛ продуцт, ТЕКСТ НОТ НУЛЛ количина, ТЕКСТ НОТ НУЛЛ цена)" "") деф Саве_цлицк (селф ): цонн = склите3.цоннецт ("дбпродуцтс.бд") цурсор = цонн.цурсор () селф.цоде = стр (селф.уи.тктТектЦоде ()) селф.продуцт = стр (селф.уи.тктПродуцт.тект ()) селф.куантити = стр (селф.уи.тктАмоунт.тект ()) селф.прице = стр (селф.уи.тктПрице.тект ()) селф.регистер = (селф.цоде, селф.продуцт, селф. количина, селф.прице) цурсор.екецуте ("УМЕТНИ ИНТО производе (код, производ, количина, цена) ВРЕДНОСТИ (?,?,?,?)", селф.регистер) цонн.цоммит () селф.уи.линеЕдит. сетТект ("") цонн.цоммит () КМессагеБок.абоут (селф, "Рецорд савед", "Нотице") деф Упдате_цлицк (селф): цонн = склите3.цоннецт ("дбпродуцтос.бд") цурсор = цонн.цурсор () # селф.цон = склите3.цоннецт ("дбпродуцтос.бд") # Наведени подаци се учитавају из табеле цурсор.екецуте ("СЕЛЕЦТ код, производ, количина, цена ИЗ производа") табле_инфо = цурсор.фетцхалл () стринг_лист = КСтрингЛист () датабасе_табле_цолумн_цоунт = 4 датабасе_табле_цолумнс = {} датабасе_табле_итемс = [] селф.уи.таблеВидгет.сетЦолумнЦоунт (датабасе_табле_цолумн_цоунт) селф.број редова = лен (табле_инфо) селф.уи.таблеВидгет.сетРнуЦоунт (цоунт нумерирани редови [0принт)] за ј у опсегу (сопствени број редова): ред = табле_инфо [ј] штампа ј за и у опсегу (0, лен (ред)): итем = ров [и] принт итем итем = стр (итем) невитем = КТаблеВидгетИтем (итем) селф.уи.таблеВидгет.сетИтем (ј, и , невитем) иф __наме__ == "__маин__": апп = КтГуи.КАпплицатион (сис.аргв) миапп = ФрмПродуцтс () миапп.схов () сис.екит (апп.екец_ ())Резултат приликом извршавања кода биће следећи: