Seite 1 von 1

Prob mit entry übergabe

Verfasst: Mittwoch 24. Oktober 2007, 22:07
von The Spirit
HI.
Fange gerade mit wxpython an und hab ein prob.
Ich schreibe nen pfad in das entry feld und möchte wenn ich start drücke, das er mir den pfad printet.

Code: Alles auswählen

class MyFrame(wx.Frame):
	def __init__(self, parent, id, title):
		wx.Frame.__init__(self, parent, id, title, size=(250, 270), style = wx.DEFAULT_FRAME_STYLE)


		wx.StaticText(self, -1, 'Programmpfad', (10, 20))

		self.folder = wx.TextCtrl(self, -1, '',  (110, 15), (120, -1))

		start = wx.Button(self, 1, 'start', (10, 160))

		self.Bind(wx.EVT_BUTTON, self.befehl1, id=1)

	def befehl1():
		cmd = self.folder.GetValue()
		print cmd
		#subprocess.Popen(cmd)


class MyApp(wx.App):
	def OnInit(self):
		frame = MyFrame(None, -1, 'test')
		frame.Show(True)
		return True

app = MyApp(0)
app.MainLoop()
er sagt jedoch typerror.. befehl1 würde kein argument erwarten, aber ich würde zwei übergeben. welche wären das denn, und wo mache ich meinen fehler?
thx

Verfasst: Mittwoch 24. Oktober 2007, 22:28
von BlackJack
Sehr offensichtlich wird das Objekt übergeben weil es sich um eine Methode handelt und beim zweiten Argument würde ich mal auf ein Event-Objekt tippen.

Re: Prob mit entry übergabe

Verfasst: Mittwoch 24. Oktober 2007, 22:30
von gerold
The Spirit hat geschrieben:befehl1 würde kein argument erwarten, aber ich würde zwei übergeben. welche wären das denn,
Hallo The Spirit!

Jeder Event-Handler bekommt als Argument das Event übergeben. Und da es sich zusätzlich um eine Methode handelt, wird als erstes Argument die Klasseninstanz (self) übergeben.

Code: Alles auswählen

def my_eventhandler(self, event = None):
    ...
``event = None`` gebe ich immer dann an, wenn ich das Event im Eventhandler nicht brauche. So kann ich die Methode auch ganz normal, ohne Event, aufrufen.

mfg
Gerold
:-)

Verfasst: Donnerstag 25. Oktober 2007, 08:04
von The Spirit
vielen dank euch beiden.
klappt jetzt einwandfrei.

hatte mir kurzzeitig schon überlegt, wieder mit tk zu arbeiten, da ich da schon wusste wie es geht. aber man hat erstens viel mehr möglichkeiten mit wx und es sieht einfach schöner aus (native halt).
da lohnt sich die einarbeitungsphase aus meiner sicht schon