Portál AbcLinuxu, 12. května 2024 09:30


Dotaz: PyQt - mazání řádku grid layoutu

Martin Stiborský avatar 18.4.2009 14:38 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
PyQt - mazání řádku grid layoutu
Přečteno: 201×
Odpovědět | Admin
Příloha:

Dobrý den.

V příloze jsem vložil obrázek aplikaci. Je v ní QGridLayout, který má na každém řádku nékolik widgetů a hlavně každý řádek má tlačítko, které má řádek smazat. Moje otázka je, jak toto nejlíp vyřešit.

Zatím jediné co mě napadlo, je funkce přípojená na každé tlačítko, která udělá následující věci:

Toto jsem vyzkoušel, problém je, že to nefunguje, pořád existuje řádek layoutu, není to ono.

Navíc, není nějaký lepší způsob, jak zjistit všechny widgety jednoho řádku ?

Díky mockrát za pomoc.

Kvík ..
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Martin Stiborský avatar 19.4.2009 17:13 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Rozbalit Rozbalit vše Re: PyQt - mazání řádku grid layoutu
Odpovědět | | Sbalit | Link | Blokovat | Admin

Jediné co mě napadlo je, že si uložím vše krom řádku který chci smazat, smažu celý widget a znovu ho vykreslím.

To fakt není jiné řešení ?

Kvík ..
Martin Stiborský avatar 20.4.2009 00:21 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Rozbalit Rozbalit vše Re: PyQt - mazání řádku grid layoutu
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tak vyřešeno.

Po smazání widgetu se mu musí nastavit setParent(None).

Díky Petrovi Vaňkovi z py.cz konference.

Kvík ..
20.4.2009 10:52 KL
Rozbalit Rozbalit vše Re: PyQt - mazání řádku grid layoutu

 

Tak vyřešeno.

Po smazání widgetu se mu musí nastavit setParent(None).

Díky Petrovi Vaňkovi z py.cz konference.

Hmm...přiznám se že mi není úplně jasné, čeho pomocí setParent(None) dosáhneš. Widgety zmizí, GC je posbírá protože nemají žádného parenta, to je jasný, ale řádek layoutu tam pořád zůstane, ne? I když teda asi nebude mít žádnou velikost...safra, už jsem PyQt dlouho nic neudělal, ztrácím tu jistotu :-)

 

Martin Stiborský avatar 20.4.2009 10:57 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Rozbalit Rozbalit vše Re: PyQt - mazání řádku grid layoutu

Máš pravdu, řádek tam zůstane a je to pro mě problém, protože pak ty řádky procházím, sbírám data  z widgetů a cyklus řídí počet řádků.

Není to čisté řešení. Jak ten řádek smazat korektně ?

Kvík ..
20.4.2009 11:13 KL
Rozbalit Rozbalit vše Re: PyQt - mazání řádku grid layoutu

Obávám se, že u už vytvořeného QGridLayoutu řádky ani nepřidáš, ani neodebereš. Asi se budeš muset smířit s tím, že tam vždycky nějaké zůstanou, a seznam widgetů pro cyklus si držet někde bokem, aby se ti tam prázdné řádky layoutu nepletly.

Martin Stiborský avatar 20.4.2009 11:16 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Rozbalit Rozbalit vše Re: PyQt - mazání řádku grid layoutu

Přidat řádek není problém.

Dobrá, postačí mi držet si řádky které jsou obsazeny widgety, to není problém. Jenom jsem doufal, že bude nějaké čistší řešení.

Kvík ..
20.4.2009 11:38 KL
Rozbalit Rozbalit vše Re: PyQt - mazání řádku grid layoutu

Jak přidáš pátý řádek do gridu, který má jen čtyři řádky? Neříkám že to nejde, možná jsem jen nevzdělanej, ale nikde na to metodu nevidím. Tedy pokud tím nemyslíš to, že do řádku gridu šoupneš dvouřádkový HBoxLayout :-)

Martin Stiborský avatar 20.4.2009 11:49 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Rozbalit Rozbalit vše Re: PyQt - mazání řádku grid layoutu

Já si nejsem vůbec jistý, jestli to všechno chápu dobře já, ale když vytvořím GridLayout, tak předem nemusím specifikovat kolik řádků/sloupců bude mít.

Když do něj tedy chci něco vložit, tak zavolám addWidget() kde určím ukazatel na widget který do layoutu vkládám, řádek, sloupec, popřípadě další věci. Toť vše.

Viz tady, "self.answersWidgets" je GridLayout, pod "self.rowCount" mám další volný řádek v layoutu a poslední parametr je sloupec.

Doufám že každý nemluvíme o něčem jiném :)

Kvík ..
20.4.2009 12:28 Raduz | skóre: 5
Rozbalit Rozbalit vše Re: PyQt - mazání řádku grid layoutu
Máš pravdu, a já žiju v minulosti :-) Počet sloupců/řádků se v konstruktoru QGridLayoutu specifikoval v Qt3, v Qt4 už se to zřejmě dělá dynamicky při vkládání widgetů. Vždyť říkám, že jsem v PyQt dlouho nic nedělal.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.