paint-brush
Akax Kunjams mä Webflow ukham UI Builder ukar Python ukar lurawaytaukata@paulfreeman
Machaq sarnaqäwi

Akax Kunjams mä Webflow ukham UI Builder ukar Python ukar lurawayta

ukata Paul10m2024/10/05
Read on Terminal Reader

Sinti jaya pachanakawa; Uñxatt’añataki

Nayan amuyunakax uñt’ayañax ukat experienciax mä Drag and Drop UI lurayiriw python ukataki
featured image - Akax Kunjams mä Webflow ukham UI Builder ukar Python ukar lurawayta
Paul HackerNoon profile picture
0-item
1-item


Nayax mä Drag and Drop lurayiriw Python ukatakix qhipa semananakanx irnaqawayta.


Uka tuqitxa aka chiqanwa uñakiptʼasma PyUIBuilder ukax mä juk’a pachanakanwa

Ukax akham sañ muni: https://github.com/PaulleDemon/PyUIBuilder ukax mä jach’a uñacht’äwiwa


¿Kunsa uta luririx luraspa?

Mä juk’a arumpixa, Python ukatakix UI jank’ak lurañ yanapt’iristam ukat walja bibliotecas/marcos ukan UI código uñstayañataki, Tkinter ukat customtkinter ukanakamp chika. uka tuqit juk’amp uñakipt’apxasma uñacht’awinaka t’aqa


Ukampis janiw mä proyecto qalltañak munkti, jan ukasti experienciajax jumanakamp chikaw yatiyañ munarakta. Aka blog tuqinx amuyt’awinak uñakipt’añäni ukatx mä jach’a uñakipäw kunjams app lurawayta ukxat uñakipt’añäni.

Uka amuyt’awimpi jutaña.

Jaqinakan iyawsäwiparjamaxa, Python ukax walja kutiw jank’ak aplicaciones lurañatakix apnaqasi, ukax juk’ampirus desarrolladores ukanakan ciencia de datos, automatización, scripting tareas ukat juk’ampinakan irnaqapki ukanakan wali uñt’atawa Walja manqhankir herramientas ukat GUIs, juk’ampis científicas ukat investigación ukan configuración ukanakanx Python ukamp luratawa kunatix ukax simplicidad ukat marcos ukanakan utjatapa, Tkinter, PyQt, ukat yaqhanakampi.

amuyu

Jichhax, web ukatakix walja Drag ukat drop lurayirinakaw utjäna, ukampis Python GUIs ukatakix wali juk’akiw utjäna, juk’ampis tkinter ukataki. Mä qawqhanak uñjta, ukampis jan walt’awix wali jisk’a widgets ukanakaw utjäna jan ukax formato XML ukan código uñstayañapäna, ukax janiw askïkiti UI Python ukan lurañax wakisispa ukhaxa.


Ukhama, qalltanx mä chiqap drag and drop UI lurayirik Tkinter ukatakik lurañ munta.


Nayax mä ideal GUI lurayirin amuyuparux tinkering sarantaskayätwa (no pun intended). Nayax Canva ukan UI ukamp amuyt’ayata, ukatx mä qawqha lurawinakampiw jutta, ukax GUI ukarux mä ideal ukham tukuyaspa.


  1. Taqi widgets ukanakax plugins ukar uñtasit luratäñapawa.
  2. 3r partido UI widgets ukar yanapt’añapawa plugins ukham uñt’ayata.
  3. Ukax activos ukanakar apkatañ yatiñawa, kunjamakitix imágenes, video's ukat juk'ampinaka.
  4. Ukax Python ukan código uñstayañapawa.

Ukatwa, julio phajjsi tukuyarojj uka proyecton irnaqañ qalltañ amtawayta

Amuyt’awiru jilxatayaña

Qalltanx tkbuilder satawa, ukax mä GUI lurayiriw Tkinter UI biblioteca ukatak uñacht’ayi.


Ukampis, jumatix uñjsta ukhax nayax pachpa amuyump jilxatayaraksnawa walja Python GUI marcos ukat bibliotecas ukanakar yanapt’añataki, kunatix taqi kunas mä plugin ukar uñtasit luratawa ukatx chiqpachapuniw kuntix nayax lurañ amtkta ukawa.

Qallta versión ukan amtäwipa.

Qalltan versión ukatakix janiw walja lurawinakamp yapxatañ munkti, ukax apnaqirinakaruw ch’amanchaspa. Nayax apnaqañ jaqinakan amuyunakaparjam lurañ munta. Ukhamatwa kunanaktï jaqenakajj jan munapki ukanak lurañatakejj tiempo ina chʼusar aptʼaskti.


Qalltatpachaw amtawayta jan mä backend jan ukax kuna jan ukax mä formulario de inscripción ukax utjañapataki. Ukhamat ukax nayatakix juk’amp sapüruw uñstayañataki ukhamarak apnaqirinakatakis apnaqañapataki. Nayax mä sanu frontend ukak munta, jaqinakax qalltapxañapataki.

JS, TS jan ukax Python aru ajlliña

mä aru ajlliñatakiwa

Jïsa, akax mä kunaw kunatix nayax amuyt’askayätwa mä juk’a pachataki, jilpach GUI lurayirinakax Python ukatakix ukanx Python apnaqasaw lurasiwayi. Python ukatakix nayrïr ajllitax PySide ukawa.


Uka juk’amp complejo GUI ukarjam lurat app ukax PyQt/Pyside apnaqasaw lurawayta, ukax a nodo ukan uñt’ayat editor mä qawqha maranak nayrajja.


Ukampis jank’akiw amuyasta kuna limitaciones ukanakas python apnaqañax qallta versión lurañataki.


  • Python UI bibliotecas ukanakax janiw walja 3r partido widgets ukanipkiti, qallta versión jank’ak lurañ yanapt’añataki.
  • Python app ukax exe archivonakjam jaljañax janiw jasakikiti, kawkhantix JS apnaqañjamax mä electron app ukham jaljañasawa.
  • Jilpacha jaqinakax web apnaqañ munapxi, mä ejecutable jan uñt’at sitio web ukan apkatañat sipansa.


Typescript ukax mä amtawirakïnwa, ukampis Typescript ukampixa sapa kutiw sinti verboso ukhamaw amuyasiyäta


Ukanakakiw jankʼak amuyayäta, ukatwa nayrïr ajllitajajj JS apnaqañar tukuwayi.


PS: Qhipharux TS ukamp jan qalltatajat arrepentisiwaytwa, ukampis ukax yaqha pachatakix mä sarnaqäwiw utjani.

Marco jan ukax jan marco.

Marco ukar uñtasit biblioteca ukax nayatakix wali askiwa React.js ukawa, ukampis mä abstracción lurañatakix clases apnaqañaw wakisispa, ukax janiw ganchos ukan uñstatapatpachax askïkiti.


Mä marco jan apnaqañan jan walt’awipax naya pachpaw taqi kuns lurañaja ukat janiw jach’a bibliotecas de componentes ukanakar mantañax utjañapäkiti, ukax react ukax uñacht’ayi.


Panpachaniw trade-offs ukanipxi, ukampis React clases ukax wali apnaqasispawa, ukatwa nayatakix qhan ajlliwix tukuwayi.

Bumpy qalltaña

Nayax agosto qallta phaxsinx wali base ukat barra lateral ukanak lurasaw qalltawayta, ukatx qullqi jan utjatapat sayt’añaw wakisïna, ukatwa mä clienten irnaqawip katuqawayta, jupax llakt’asiñjamaw qhipa qullqix jan pagawaykiti. Nayax crowd funding ukar yant’awayta ukampis janiw ukanx suerteniraktti.


Ukhama, septiembre phaxsinx juk’a qullqinak utjkitu ukampix aka proyecto ukar taqpach mantañ amtawayta. Niya 9 uru sata qallta phaxsitx wasitatw irnaqañ qalltawayta.

Nayratpach amtañax ...

nayraqat amtaña

Walja pachaw abstracción base uka tuqit amuyt’añarux sarawayi, ukax escala ukar jilxatayatarakispawa munañanakar phuqhañataki.


  1. Mä Canvas ukaniña munapxta, ukax Figma ukar uñtasit zoom ukat panned ukanakaw utjaspa.

  2. Mä widget base ukat taqi yaqha widgets ukanakax jilxattaspawa.

  3. Mä Drag and drop ukax UI elementos ukanakar lona ukar apkatañataki ukat jaqukipañataki.


React ukamp lurañatakix amuyt’añaw wakisi ukat mä juk’a lurañaw wakisi, biblioteca jan ukax marco uka tuqit ch’axwañas utjkchispas, sapa kutiw biblioteca ukar uñtasit Framework ukar uñtasit juk’amp jikxatasi.

UI ukan lurawipa

Nayax sapa kutiw kunjams Canva jupanakan barra lateral ukanakap lurapxi ukx wali askit uñjta, nayax drag and drop lurayirijatakix ukham uñtasit utjañap munta.

Kunatï amuyujan utjkäna uk mä papelar dibujayäta. Janiw wali suma artistax ukanx 🙄

UI ukan lurawipa

Nayan amuyt’awijax lona ukat widget ukanakamp chikt’atäñ tuqitwa.

nayraqat amtañax...

Ukhamarusa, khitis ayxaruña, tama mayjt’ayaña, ajlliñatakiwa encargado ukhamäñapa. Uka lona jan ukax widget base. ¿Kunjamsa widget manqhankir widgets ukanakax apnaqasini?


Widget base ukax wawanakapar uñt’aspati jan ukax mä sapa estructura de datos ukampiw lona ukax apnaqasini. ¿Kunjamsa wawanakarojj wawanak manqhar tukuyä?


¿Kunjamsa arrastre ukat drop ukax lona ukat yaqha widgets ukanakan manqhan irnaqani?


¿Kunjamsa layouts ukanakax apnaqatäni?


Akax mä qawqha jiskt’äwinakawa, janïr taqpach lurañ tukuykasax jiskt’añ qalltawayta.


Jichhax UI ukax juk’amp sapuru uñtasi, ukampirus walja amuyt’awinakaw base lurañatakix utjawayi, ukhamax apnaqirinakatakix juk’amp sapuru uñtatawa.

HTML Canvas ukarjam lurat uñakipaña jan ukax jan lona ukar uñtasit uñakipaña.

Lona ukarjam lurat uñakipaña

Jichhax html ukax mä elemento Canvas predeterminado ukaniwa, ukax walja lurañanak lurañ yanapt’i, dibujar, imagen yapxataña ukat kunaymaninak, jichhax mä elemento ideal ukhamaw uñstawayi nayan programajataki.


Ukhama, nayax checkout qalltawayta kunatix utjki ukat utjki uka implementación de un arrastre y descarga, resizing, zoom y pan. Nayax jikxatawayta TelaJs ukax mä juk’a pachanakanwa , akax mä biblioteca fantástica ukhamaw nayan caso de uso ukataki.


Nayax Fabric.Js ukamp yant’añ yant’awayta ukatx taqpach fabric.js ukan phuqhañ yant’awayta kunjamtix uñjapkta ukhama phuqhaña , ukampis lona tuqitxa kunas utjäna, ukax janiw nayratpach uñjkayätti.


  1. Nayax lona lurañkamax hooks-based approach ukamp yant’añ qalltawayta, ukampis fabric.js dispose función ukax async ukhamawa, ukhamat Hooks ukamp jan sum anatañapataki.
  2. Canvas ukax janiw wawa elementonakanïkaspati kunjamakitix Div jan ukax yaqha elementos ukax mä juk’a ch’amäspawa layout gerentes ukanakar lurañataki
  3. Kunas lona ukan depuración lurañax wali ch’amawa kunatix lona ukan manqhankir elementonakapax janiw elemento de inspección de herramientas desarrolladora ukan uñacht’ayatäkiti


Jani lona ukar uñtasit uñakipaña


Jichhax yant’awinak tukuyatatxa, jan lona ukan uñakipañax juk’amp askïkaspas ukhamaw amuyasi, kunatix nayax layout gerente predeterminado ukar mantañax utjitu, ukat juk’ampirus walja componentes UI pre-construidos ukanakaw utjäna, ukax aka ideal ajlliw luraspawa escalamiento ukanxa.


Nayax lona ukar uñtasit lurañ amtawayta pä yaqha div ukamp mä manqhankir div ukat anqäx contenedor div ukamp apnaqasa.


Jichhax zoom ukat pan lurañax mä juk’a jasakiw phuqhañataki, kunatix CSS ukax nayratpach transformar, escala ukat jaqukipañampiw utjäna.


Nayraqatxa, uk phuqhañatakix mä phukhuw utjañapäna, ukax mä lona katxaruñapawa. Jichhax aka lona ukax elemento invisible (janiw desbordamiento imantatakiti), akax kawkhantix taqi elementos ukanakax jaqukipatawa, ukatx escalado ukat jaqukipäwix apnaqatarakiwa.

Contenedor ukax mä juk’a pachanakanwa

Jach’aptayañatakix escala jilxatayañaw wakisïna ukat jisk’achañatakix jisk’achañaw wakisïna.

Aka sapuru uñacht’äwimp yant’añäni. ( + llave ukax jach’aptayañataki ukat - jisk’achañataki)


Panning ukax ukhamarakiw irnaqäna

Ukax mä juk’a pachanakanwa

ukatsti ch’allt’aña

Qalltkasax mä qawqha bibliotecas ukanakat yatxatawaytwa kunjamakitix React-suma-Dnd , . React Dnd-kit ukax mä juk’a pachanakanwa ukat Ukax mä juk’a pachanakanwa Swappy .


Yatxatañ tukuyasax uñjtwa react-beautiful-dnd ukax janiw mantenido ukhamäxiti ukatx React dnd-kit ukampiw qalltawayta. Mä qallta lurañjamaxa, dnd-kit ukan documentación ukax wali jisk’akiwa kuntix luraskta ukatakix jikxatawayta, Ukhamarus, mä machaq mistuwiw biblioteca ukar jach’a mayjt’äwinakamp niyaw mistuni, ukatwa react-dnd-kit ukax jach’a mistuñkamaw jaqukipañ amtawayta.


Nayax kawkhantix DND-kit apnaqkta uka chiqanakax HTML ukan Drag and Drop API ukamp wasitat qillqt’ata. Nativo Drag and drop API ukax limitación ukakiw utjäna, ukax waliw yaqhip dispositivos táctiles ukanakamp yanapt’ata, ukax nayatakix janiw kunäkisa kunatix dispositivos no táctiles ukanakatak luraskäyäta.

Mä sapa phunchhawi chiqapa

Chiqa yatichäwinak uñkatañamawa

kunawsatix mä app ukham luraski ukhax taqi variables ukat mayjt’awinak chhaqhayañax jasakiw tukuspa. Ukhama, janiw walja variables ukanakax pachpa yatiyaw uñakipt’añax utjkaspati.


Sapa widget ukan yatiyawipa/estado ukax lona ukan katxaruñapawa jan ukax widget ukan pachpa katjañapawa, ukax ukatx yatiyawinak mayiwiparjam pasañapawa.


Jan ukax inas biblioteca de gestión estatal ukax redux ukham apnaqañax wakischispa


Nayax taqi yatiyawinak widgets ukanakat componente Canvas ukan apnaqat utjañapatakiw ajlliwayta, kunayman amtawinak yant’asa.


Datos ukan estructurapax mä kunayman uñtasitawa.

 [ { id: "", // id of the widget widgetType: WidgetClass, // base widget children: [], // children will also have the same datastructure as the parent parent: "", // id of the parent of the current widget initialData: {} // information about the widget's data that's about to be rendered eg: backgroundColor, foregroundColor etc. } ]

React Contexto ukan irpirinakapa

Jichhax activos ukanakax barra lateral ukan apkatat munta, ukax widgets ukan barra de herramientas ukamp accesibles ukhamawa. Ukampis sapa kutiw side-tabs ukar mayjt’ayawayta, re-render ukax activos cargados ukanakax chhaqtawayxiwa.


Redux ukan mä jach’a limitación ukax datos serializables ukanakak imañawa. Jani serializable datos ukanakaxa kunjamatixa uñacht’awi, video, yaqha yänakaxa janiwa redux ukanxa imatäkaspati. Ukhamatwa kunayman componente ukar muyuntat datos comunes ukanakax pasañax juk’amp ch’amäspa.


Mä thakhix uka atipjañatakix React Context uka apnaqañawa. Mä juk’a arumpixa, React Context ukax mä thakhiw componente quqa tuqi datos pasañapataki jan props ukanak sapa nivelan manualmente pasañapataki.


Taqi kunatix lurañajäki ukax kunayman componentes ukan datos ukanakax utjañapatakix mä React contexto proveedor ukar muyuntañawa.


Nayax pä tuqitw nayan pachpa contexto proveedores ukanakax lurawayta:

  1. Jaqukipaña ukat jaqukipaña - Barra lateral ukan jaqukipaña ukat jaqukipaña ch’amanchaña + wawa elementos ukanaka manqhan jaqukipaña ukat jaqukipaña.
  2. Archivo apkatañ - Sapa widget ukan barra de herramientas ukan apkatat qillqatanakar mantañapataki.


Akax mä sanu uñacht’awiwa kunjams React contexto ukax Drag ukat drop ukatakix apnaqawayta.

 import React, { createContext, useContext, useState } from 'react' const DragWidgetContext = createContext() export const useDragWidgetContext = () => useContext(DragWidgetContext) // Provider component to wrap around parts that need drag-and-drop functionality export const DragWidgetProvider = ({ children }) => { const [draggedElement, setDraggedElement] = useState(null) const onDragStart = (element) => { setDraggedElement(element) } const onDragEnd = () => { setDraggedElement(null) } return ( <DragWidgetContext.Provider value={{ draggedElement, onDragStart, onDragEnd }}> {children} </DragWidgetContext.Provider> ) }


Jïsa! ukax ukhamawa. Jichhax taqi kunatix lurañajäki ukax componente ukar muyuntañakiw kawkhantix contexto ukax munaski, ukax nayan casojanx Canvas ukat barra lateral ukanak patxankiwa.

Código uñstayaña

Phuqhawi

Kunjamakitix sapa widget ukax mayj mayj sarnaqi ukatx atributos ukanakax utjarakiwa, nayax amtawayta widgets ukanakax jupanakan código uñstayañapatakiw lurapxañapa ukatx mä motor de código ukax variable suti ch’axwawinakarukiw askichani ukat código ukar mayacht’añataki.


Ukhamat, nayax jasakiw jilxattawayta walja nayraqat lurat widgets ukanakar yanapt’añataki ukhamarak yaqhip 3rd party UI plugins ukanakar yanapt’añataki.

Jakañar saraña

Nayax janiw mä backend jan ukax mä signup ukax utjkitänti ukatx walja empresanakax inakiw hosting ukax páginas estáticas ukanakatakix utjäna. Nayraqatax Vercel ukamp sarañ amtawayta, ukampis walja kutiw Vercel llanta librex juk’amp mayiwinak utjki ukhax saraqaskir uñjta.


Thats kunapachatix nayax yatxatawaytwa Cloudflares ukax mä juk’a pachanakanwa sacrificio luraña. Libre llantanakapajj niya taqe kunas jan tukuskirïnwa. Ukhama, cloudflare apnaqañax nayrïr amtäwijaruw tukuwayi.


Uka jan walinakax lurañ pachanakax wali llamp’ukiwa ukatx mä juk’a documentación ukanakax janiw utjkänti.


Luräw thakhix juk’amp chuym usuchjayir chiqax lurañ jan walt’awiwa, Vercel ukan irnaqäna, ukampis janiw cloudflare ukan pankanakapan irnaqkänti??? Ukat tronconakajj janiw ukham qhanäkänti. ukat llantanakax inakiw utjistu, phaxsitx 500 lurawinakakiw utji, ukhamax janiw sinti ina ch’usar apt’añ munkti


Walja horanakaw yant’awayta ukatx integración continua ukax ch’usat cadena ukar uñt’ayañ amtawayta

 CI='' npm install


Ukat qhepatjja, en vivoruw sarjjäna.
Jakaña

¿Kunjamsa phajjsinakan nayrar sartawayi uk uñjañ munasmati?

Nayax aka taqpach yänak jaqinak nayraqatan lurawayta. Nayax jumax uñjañ muntawa nayrar sartawayi mä sanu barra lateral ukhat mä taqpach phust’at Drag n drop lurayirir jumax taqpach uñakipt’asma pacha uñt'ayawi aka tuqina .


#buildinpublic ukax mä jach’a uñacht’äwiwa


Saram! jan armasimti, machaq yatiyäwinakatakix arktañamawa

Warawara repo ⭐️


Jumatix aka kasta contenido ukar munassta ukhax juk’amp blogs ukanakaw qillqt’asiskä juk’amp manqhar sarañataki kunjams amtaskta ukat yänak lurañ munta, arktañatakix subpila de noticias ukar qillqt’asipxasmawa :)