Nayax mä Drag and Drop lurayiriw Python ukatakix qhipa semananakanx irnaqawayta.
Uka tuqitxa aka chiqanwa uñakiptʼasma
Ukax akham sañ muni:
¿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
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.
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.
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.
Ukatwa, julio phajjsi tukuyarojj uka proyecton irnaqañ qalltañ amtawayta
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.
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.
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
Ukampis jank’akiw amuyasta kuna limitaciones ukanakas python apnaqañax qallta versión lurañataki.
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 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.
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.
Walja pachaw abstracción base uka tuqit amuyt’añarux sarawayi, ukax escala ukar jilxatayatarakispawa munañanakar phuqhañataki.
Mä Canvas ukaniña munapxta, ukax Figma ukar uñtasit zoom ukat panned ukanakaw utjaspa.
Mä widget base ukat taqi yaqha widgets ukanakax jilxattaspawa.
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.
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 🙄
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.
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
Nayax Fabric.Js ukamp yant’añ yant’awayta ukatx taqpach fabric.js ukan phuqhañ yant’awayta kunjamtix uñjapkta ukhama
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.
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
Qalltkasax mä qawqha bibliotecas ukanakat yatxatawaytwa kunjamakitix
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.
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. } ]
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:
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.
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.
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
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.
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
#buildinpublic ukax mä jach’a uñacht’äwiwa
Saram! jan armasimti, machaq yatiyäwinakatakix arktañamawa
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 :)