python+glade

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

habe gerade vollgenes problem. ich habe mir ein fenster unter glade zusammen gestellt, und es in meinem programm, als klasse eingebunden. ich lade einfach die xml datei und lasse mir das fenster anzeigen. ich habe einen button in das formular eingebaut, der beim klicken eine funktion ausführen soll. funktioniert auch so weit. allerdings wird diese funktion auch schon ein mal aufgerufen, wenn das formular startet, ohne den button geklickt zu haben. das ist natürlich nicht dolle, und ich weiß nicht genau, wie ich dieses problem lösen kann. weiß jemand rat? ich füge mal den code, der klasse hier ein:

Code: Alles auswählen

#!/usr/bin/python
import sys
import windows
import actions
import tables
import pygtk 
pygtk.require("2.0") 
import gtk 
import gtk.glade
import _mysql

class Adress (object):
	def __init__ (self):
		self.wTree = gtk.glade.XML ("forms/forms.glade", "adress")
		self.window = self.wTree.get_widget("adress")
class Login (object):
	def __init__ (self):
		self.wTree = gtk.glade.XML ("forms/forms.glade", "login")
		self.window = self.wTree.get_widget("login")
		dic = { "on_login_btn_anmelden_button_press_event" : actions.schreibe (object)}
		self.wTree.signal_autoconnect ( dic )

###############################
# Alle Windows initialisieren #
###############################
def init_windows ():
	winLogin = Login ()
	winLogin.window.show ()
egal, welche methode, ich von dem button, benutze, beim starten des formulars, wird immer ein mal die methode actions.schreibe ( meine eigene methode ) aufgerufen.
weiß jemand von euch rat ?
BlackJack

In Zeile 21 rufst Du die Funktion selber auf. Da wird nicht die Zeichenkette auf die *Funktion* `actions.schreibe` abgebildet, sondern auf das Ergebnis des Funktions*aufrufs* ``actions.schreibe(object)``. Wobei `object` die "Urklasse" aller "New-Style"-Objekte ist.

Code: Alles auswählen

In [53]: {'a': str}
Out[53]: {'a': <type 'str'>}

In [54]: {'a': str(object)}
Out[54]: {'a': "<type 'object'>"}
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

hmmm, dachte eher, mit der zeile 21, binde ich den button, an eine routine, die er beim drücken ausführen soll. in diesem falle eine klasse, von mir. zu mindest habe ich das so gesehen. hatte ein wenig danach gegooglet. wie macht man denn das richtig? das ein button, eine funktion aussführt. ich benutze ja glade. dort kann ich dem button ein signal mit geben sprich "on_login_btn_anmelden_clicked" dieses, setzte ich dann wie bei zeile 21 ein und da hinter, die funktion, die bei dem event aufgerufen werden sollte. ist das falsch? wie macht man es dann richtig?
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

ich denke, ich habs. wenn ich es so mache, wie hier, funktioniert das, ohne probleme.

http://www.python-forum.de/topic-11217. ... ight=glade
Antworten