🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #60401

Re: pygtk, glade, parametry funkcji obsługi sygnału

#60401
From: Wiktor Grębla
Date: Tue, 08 Nov 2005 12:18
55 lines
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-mail
References: <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