Statische Methoden
Verfasst: Dienstag 12. Mai 2009, 14:24
Hi,
ich habe mir einen kleinen Texteditor mit FTP-Unterstützung geschrieben, aber als UI-Toolkit noch Tkinter verwendet. Deshalb möchte ich jetzt auf GTK umsteigen, da ich mittlerweile auf einer Linux-Kiste arbeite.
Aber zum eigentlichen Problem: Im Zuge desssen habe ich auch gleich den Code optimiert, auch einiges in eigene Module ausgelagert. Jetzt habe ich eine Methode in einem Modul, dass Text in das Textfeld in der Hauptklasse einfügen soll.
Da es etwas kompliziert wäre, dass im Detail zu beschreiben, habe ich ein Beispiel gemacht, dass demonstriert, wie es später ablaufen soll:
Ich habe auch schon im Internet nachgelesen, wie das funktionieren soll, aber trotzdem wirft der Code nur Fehler, egal was ich auch probiere:
Ich beziehe mich dabei auf http://www.rexx.com/~dkuhlman/python_10 ... n_101.html Absatz "2.5.2.4 Static methods and class methods ".
Im übrigen nutze ich python 2.5.2 .
Danke im Voraus
baracuda
PS: wie schon angedeutet: verkompliziert es dass Problem, wenn editor_app die andere Klasse als Modul importiert?
ich habe mir einen kleinen Texteditor mit FTP-Unterstützung geschrieben, aber als UI-Toolkit noch Tkinter verwendet. Deshalb möchte ich jetzt auf GTK umsteigen, da ich mittlerweile auf einer Linux-Kiste arbeite.
Aber zum eigentlichen Problem: Im Zuge desssen habe ich auch gleich den Code optimiert, auch einiges in eigene Module ausgelagert. Jetzt habe ich eine Methode in einem Modul, dass Text in das Textfeld in der Hauptklasse einfügen soll.
Da es etwas kompliziert wäre, dass im Detail zu beschreiben, habe ich ein Beispiel gemacht, dass demonstriert, wie es später ablaufen soll:
Code: Alles auswählen
import pygtk
pygtk.require("2.0")
import gtk
class editor_app:
def __init__(self):
self.w = gtk.Window()
self.w.set_title("UI Test")
self.w.set_size_request(300, 300)
self.w.set_border_width(40)
self.textview = gtk.TextView()
self.w.add(self.textview)
self.w.connect("destroy", gtk.main_quit)
self.w.show_all()
def insert_text(self, t):
b = self.textview.get_buffer()
b.set_text(t)
def main(self):
gtk.main()
insert_text = staticmethod(insert_text)
class other_class:
def __init__(self):
editor_app.insert_text("Hello world!")
a = editor_app()
b = other_class()
a.main()
Code: Alles auswählen
Traceback (most recent call last):
File "test.py", line 32, in <module>
b = other_class()
File "test.py", line 29, in __init__
editor_app.insert_text("Hello world!")
TypeError: insert_text() takes exactly 2 arguments (1 given)
Im übrigen nutze ich python 2.5.2 .
Danke im Voraus
baracuda
PS: wie schon angedeutet: verkompliziert es dass Problem, wenn editor_app die andere Klasse als Modul importiert?