Portál AbcLinuxu, 2. května 2024 18:02


Dotaz: PyGtk FileChooserDialog

24.4.2010 13:11 Radek
PyGtk FileChooserDialog
Přečteno: 281×
Odpovědět | Admin
Ahoj, potřeboval bych poradit s PyGtk. Potřebuju aby se mi zobrazil dialog na vyber souboru, po vybrani souboru se provedla prislusna funkce, ale dialog se nezaviral, ale cekal, az se vybere dalsi soubor a s nim provedl to samy a porad dokola.

mam treba neco takovyho:
dialog = gtk.FileChooserDialog(title=None,action=gtk.FILE_CHOOSER_ACTION_OPEN, buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK))
	
		response = dialog.run()
		if response == gtk.RESPONSE_OK:
			prislusna_funkce(dialog.get_filename())
v mem provizornim reseni je na konci dialog.destroy() a to cele ve smycce.

Takze se po vyberu souboru provede funkce, dialog se zavre a otevre se novy. To je samozrejme naprosta prasarna. Nema nekdo lepsi napad? :-) Dekuju, zdravi Radek

Řešení dotazu:


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

Odpovědi

24.4.2010 13:13 chrono
Rozbalit Rozbalit vše Re: PyGtk FileChooserDialog
Odpovědět | | Sbalit | Link | Blokovat | Admin
Prečo nemôžeš tých súborov vybrať viac a to okno normálne zatvoriť?
24.4.2010 13:27 Radek
Rozbalit Rozbalit vše Re: PyGtk FileChooserDialog
No on totiz alespon v tom FileChooserDialogu tak nefunguje. Pokud vim tak zavolamnim dialog.get_filename() se mi vrati jen adresa naposledy oznaceneho souboru. Ted jsem jeste zkousel takovy ty standartni zpusoby na oznaceni vice souboru, abych videl co se stane. Ale oznacit jich vic poroste nejde.
24.4.2010 13:34 chrono
Rozbalit Rozbalit vše Re: PyGtk FileChooserDialog
Skús tam pridať ešte dialog.set_select_multiple(True)
24.4.2010 13:40 chrono
Rozbalit Rozbalit vše Re: PyGtk FileChooserDialog
A ešte som zabudol, že potom budeš musieť použiť niečo ako:
for name in dialog.get_filenames():
  prislusna_funkce(name)
24.4.2010 13:49 Radek
Rozbalit Rozbalit vše Re: PyGtk FileChooserDialog
Skvělé, děkuji mnohokrát, jsem Vašim dlužníkem ;-)
24.4.2010 14:10 Radek
Rozbalit Rozbalit vše Re: PyGtk FileChooserDialog
Omlouvam, se, ze jeste otravuju, soucasny stav me bohate staci, ale kdyby jste nahodou znal zpusob, jak docilit presne toho, co jsem poisoval v dotazu, tak by mi to taky trochu pomohlo. Jde mi o to, ze si vyberu nejaky soubor, ten se mi zpracuje a zobrazi se mi graf. A podle toho co v tom grafu vidim si takoto vybiram a zobrazuju dalsi soubory. Kdybych mel porad otevreny dialog a jen si klikal na soubory, ktere chci zobrazit, urychlilo by to mou praci. Ale jinak jesete jedou dekuji za Vasi predeslou radu
24.4.2010 14:24 chrono
Rozbalit Rozbalit vše Re: PyGtk FileChooserDialog
FileChooser posiela signály file-activated a selection-changed, takže by mohlo pomôcť pripojiť sa na tie signály (prvá sa pošle až pri stlačení Enter, alebo dvojkliku na ten súbor, druhý sa posiala pri každej zmene).
Fuky avatar 24.4.2010 15:12 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: PyGtk FileChooserDialog
Odpovědět | | Sbalit | Link | Blokovat | Admin

Můžeš to vyřešit třeba takhle:

self.xml_input_FS = gtk.glade.XML("%s/opso.glade" % (cesta["share"]), "input_FS")
self.xml_input_FS.signal_autoconnect(self)
self.input_FS = self.xml_input_FS.get_widget("input_FS")

while (True):
    result = self.input_FS.run()

    if (result == gtk.RESPONSE_OK):
        nazev_souboru = self.input_FS.get_filename()
        ...
    else:
        break
    
self.input_FS.destroy()

Pokud dvojklikem vybereš soubor nebo jedním kliknutí a následným stisktnutím tlačítka OK, zůstane FS otevřený a postupně se zpracovávají další a další soubory. Okno se zavře teprve když stiskneš jiné tlačítko nebo ho zavřeš přímo např. křížkem nebo klávesovou zkratkou.

Nebo si to představuješ ještě jinak?

-- RÁMO: psí tábor , ETriatlon: Výuka plavání
24.4.2010 17:13 Radek
Rozbalit Rozbalit vše Re: PyGtk FileChooserDialog
Ano presna tak si to predstavuju, akorat nemam zkusenosti s glade. Co prosim znamena to "%s/opso.glade" % (cesta["share"].
(kdyz jsem to zkousel pustit kricelo to na me, ze globalni pormena "cesta" neni definovana. )
24.4.2010 17:35 chrono
Rozbalit Rozbalit vše Re: PyGtk FileChooserDialog
V tom prvom reťazci sa %s nahradí obsahom premennej cesta['share'] (a teda je to niečo ako printf v C).

Inak je to to isté, ako keď sa ten pôvodný program upraví:
dialog = gtk.FileChooserDialog(title=None,action=gtk.FILE_CHOOSER_ACTION_OPEN, buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK))
while True:
	response = dialog.run()
	if response == gtk.RESPONSE_OK:
		prislusna_funkce(dialog.get_filename())
	else:
		break
Fuky avatar 24.4.2010 17:44 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: PyGtk FileChooserDialog
In [1]: cesta = {"share": "/opt/opso/share"}
In [2]: print "%s/opso.glade" % (cesta["share"])
/opt/opso/share/opso.glade

Je to cesta ke XML specifikaci GUI vytvořené pomocí Glade. Uvedl jsem jen pro ukázku, kdyby jsi navrhoval komplikovanější GUI a nechtěl ho navrhovat ručně.

24.4.2010 18:37 Radek
Rozbalit Rozbalit vše Re: PyGtk FileChooserDialog
Monohorakt dekuji, mozna tomu nebudete verit, ale díky vám mám hned o neco jednodussi zivot :-)

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.