Article View: pl.comp.os.linux.programowanie
Article #60401Re: pygtk, glade, parametry funkcji obsługi sygnału
From: Wiktor Grębla
Date: Tue, 08 Nov 2005 12:18
Date: Tue, 08 Nov 2005 12:18
55 lines
2947 bytes
2947 bytes
Maciej Dziardziel napisał(a):
>> Mam szybkie pytanie - da się w glade zdefiniować w jakiś magiczny sposób
>> funkcję obsługi sygnału z parametrami?
>>
>> W tym momencie tworzę sobie obiekt = xml.get_widget('costam'), ustawiam
>> handler obiekt.connect('zdarzenie', funkcja, argument1, argument2) i gra,
>> ale trochę to niespójne, bo niektóre handlery są zdefiniowane w pliku
>> xml, a niektóre w kodzie.
>
> Ale o co chodzi? signal_autoconnect i wszystko działa.
Chodzi o to, że handlery zdefiniowane są w osobnym module, a jeden z nich
potrzebuje parę zmiennych z innego modułu, jeżeli w tym module zrobię sobie
button:
button = xml.get_widget('button')
i dla niego wywołam:
button.connect('clicked', functions.startsearching, searchdata, store)
to w ten sposób handler functions.startsearching(searchdata, store)
dostanie czego potrzebuje.
Zaczynam się domyślać prawdopodobnej odpowiedzi - zdefiniowany w glade
handler przy wywołaniu ma dostęp tylko do przestrzeni nazw drugiego
modułu?
Jeżeli w glade zdefiniuje handler dla buttona w postaci:
startsearching(widget, searchdata, store)
to nie działa. Jeżeli zdefiniuje go jako starsearching (bez parametrów) to
dostaje ostrzeżenie, że dostał jeden zamiast trzech argumentów, czyli handler
jest wywoływany, ale nieprawidłowo.
Jeśli chodzi o signal_autoconnect to robie to +/- tak:
callbacks = {}
modules = [functions]
for module in modules:
methods = module.__dict__
for method_name in methods.keys():
method = methods[method_name]
if type(method) == types.FunctionType:
callbacks[method_name] = module.__dict__[method_name]
[...]
xml.signal_autoconnect(callbacks)
Pozdrawiam
W.
--
An idea is not responsible for the people who believe in it.
Technical Details
Message-ID:
<slrndn15s0.22m.greblus@greblus.localdomain.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mailReferences:
<slrndmvo5d.b65.greblus@greblus.localdomain.pl> <20051108002905.4608.0.NOFFLE@fiedzia.homeip.net>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail From: Wiktor Grębla <greblus@no.poczta.fm.spam> Newsgroups: pl.comp.os.linux.programowanie Subject: Re: pygtk, glade, parametry funkcji obsługi sygnału Date: Tue, 8 Nov 2005 13:18:08 +0100 Organization: HCLU&F Lines: 55 Message-ID: <slrndn15s0.22m.greblus@greblus.localdomain.pl> References: <slrndmvo5d.b65.greblus@greblus.localdomain.pl> <20051108002905.4608.0.NOFFLE@fiedzia.homeip.net> NNTP-Posting-Host: cypher.fire.net.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1131452243 18535 83.17.124.50 (8 Nov 2005 12:17:23 GMT) X-Complaints-To: usenet@news.onet.pl NNTP-Posting-Date: Tue, 8 Nov 2005 12:17:23 +0000 (UTC) X-Sender: RqpiCohiRYNHDmwIM8CrA/fJbMHfNAT/ X-Face: 7Cnp$t!1RZoB'PhxW,nVRXpWn8XH@w&|!YV5'eP;K[<6[po3A#]npp`X9QYX6k'GH$>kG>#JVL[@TEw8kH*rQe#N9Tjo~*En%$I"<<_y<`KYRq[K(VoWSS User-Agent: slrn/0.9.8.1 (Linux) X-Photo: http://republika.pl/greblus/shot/grebli.png Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit