Seite 14 von 14
Re: Neuling sucht Rat
Verfasst: Mittwoch 24. April 2013, 20:55
von BlackJack
@Tengel: Der Fehler ist der hier:
Code: Alles auswählen
In [1]: None['text'] = 'irgendwas'
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/bj/<ipython-input-1-3c456552bda6> in <module>()
----> 1 None['text'] = 'irgendwas'
TypeError: 'NoneType' object does not support item assignment
Re: Neuling sucht Rat
Verfasst: Mittwoch 24. April 2013, 21:01
von Tengel
Hm der Fehler wurde wohl verursacht weil mein __init__ nicht korrekt war.
Das eigentliche Problem scheinen die Schnittstellen zu sein.
Ich starte das Programm - das Gui - sieht aus wie es soll.
Ich nutze den Wert anzeigen Button und es kommt
Code: Alles auswählen
Exception in Tkinter callback
Traceback (most recent call last):
File "D:\Phyton\lib\tkinter\__init__.py", line 1442, in __call__
return self.func(*args)
File "D:/Phyton/trafficklasse/tr.py", line 21, in standAnzeigen
anzeige["text"] = "Der momentane Verbrauch liegt bei "+str(self.startWert)+" mb."
NameError: global name 'anzeige' is not defined
Muss ich da mit self.anzeige in der Gui Klasse und other.anzeige in der Traffic Klasse arbeiten?
Re: Neuling sucht Rat
Verfasst: Mittwoch 24. April 2013, 21:24
von Sirius3
@Tengel: die Traffic-Klasse sollte gar nichts mit der »anzeige« zu tun haben.
Re: Neuling sucht Rat
Verfasst: Mittwoch 24. April 2013, 21:28
von Tengel
hmmmmm
Momentan versuch ich ja über eine Gui Methode eine Traffic Methode aufzurufen - das geht nicht?^^
Re: Neuling sucht Rat
Verfasst: Mittwoch 24. April 2013, 21:41
von Sirius3
@Tengel: es geht darum, dass GUI-Elemente ausschließlich in der GUI-Klasse verwendet werden sollten, um zum Einen die restlichen Methoden auch ohne GUI benutzen zu können, zum anderen das GUI einfach durch ein anderes austauschen zu können.
Re: Neuling sucht Rat
Verfasst: Donnerstag 25. April 2013, 01:36
von Tengel
http://pastebin.com/bfMxNUNG
So - die neuste Version.
Ist das mit den Schnittstellen so (halbwegs) richtig?
Das momentane Problem ist:
da ich Gui und Traffic ja getrennt hab - fehlt mir irgendwie die Möglichkeit nach einem Traffic Methoden aufruf - denn Text im Anzeigelabel zu aktualisieren.
Als ich nur mit einer Klasse gearbeitet hab war das ja leicht - einfach in den jeweiligen Methoden anzeige["text"] - und geändert, aber wie mache ich das jetzt?
Re: Neuling sucht Rat
Verfasst: Donnerstag 25. April 2013, 06:19
von Sirius3
Was fällt Dir auf, wenn Du Deine GUI-Klasse anschaust?
- Keine einzige Methode benutzt »self«, das heißt, sie haben nichts gemeinsam, warum also eine Klasse?
- Jede Methode ist trivial. Ich habe keinen Vorteil davon, dass ein einzelner Button in einer eigenen Method erzeugt wird.
- das Verarbeiten von GUI-Ergeignissen wird nicht in der GUI-Klasse gemacht, sondern in der Traffic-Klasse.
Du benutzt überall globale Variablen, wo sie nicht sein sollten. Zum Beispiel »Traffic.verbrauchSchreiben« tut nicht, was der Name verspricht, sondern greift auf die globale Variable »main« zu, um das Programm zu beenden!
An Deiner Strukturierung ist so viel falsch, dass es am Besten ist, Du fängst nochmal von vorne an. Als kleine Hilfe hier mal ein Gerüst, das Du mit Leben füllen kannst:
Code: Alles auswählen
import tkinter
class Traffic():
def __init__(self):
self.start_wert = 0
def load(self, filename):
""" Liest den start_wert aus der Datei, und gibt einen Status zurück. """
# to do ...
# restliche Methoden
class Gui():
def __init__(self):
""" erzeugt ein tkinter-Hauptfenster mit allen Komponenten """
self.traffic = Traffic()
self.tk = tkinter.Tk()
# to do ...
def mainloop(self):
self.tk.mainloop()
# hier kommen die Methoden, die auf Ereignisse reagieren
def main():
gui = Gui()
gui.mainloop()
if __name__ == '__main__':
main()
Du solltest nur etwas in die beiden Klassen schreiben müssen. Auf Modulebene ist das Programmgerüst fertig. Ich habe absichtlich eine Funktion »main« erstellt, damit Du nicht in Versuchung kommst, »gui« irgendwo in Deiner Traffic-Klasse zu benutzen.
Re: Neuling sucht Rat
Verfasst: Donnerstag 25. April 2013, 09:03
von Tengel
Vernichtend

Re: Neuling sucht Rat
Verfasst: Donnerstag 25. April 2013, 10:25
von Tengel
Ich glaub es nähert sich dem Punkt wo ichs aufgeb

Re: Neuling sucht Rat
Verfasst: Donnerstag 25. April 2013, 10:36
von webspider
Wenn du schon dabei bist, dann mach einen neuen Thread auf, dieses Monstrum hat 18 Seiten und mehr als genug Themen berührt.