Hi, ich bin gerade dabei Python zu lernen und hab ein problem. ich habe mehrere Klassen definiert: first, second und third. Ich möchte in der Klasse third das Entry "Eingabe" auslesen, das ich in der klasse "second" erstellt habe. Wie muss ich das entry übergeben, das es ausgelesen werden kann??
python + Tkinter: klassen-problem
Anmeldungsdatum: Beiträge: 36 |
|
||
Anmeldungsdatum: Beiträge: 788 |
Ist jetzt schwer nachzuvollziehen so ohne Code Ausschnitt. Aber wie wäre es wenn du es dem Konstruktor von third einfach übergibst. |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 36 |
wenn du die init(...) methode meinst: ich weiß nicht richtig wie ich es übergeben soll, also wie ich es eingeben soll. Ein kumpel wollte es mir schon erklären, musste dann aber weg und ich hab es auch nicht verstanden. Wenn jemand ne gute Anleitung kennt / mir geben kann fänd ich das echt toll und mir währe echt geholfen! (ich muss zugeben nichts richtiges gefunden zu haben |
||
Anmeldungsdatum: Beiträge: 788 |
Ich probiers mal. Also
Hoffe mal das hilft dir weiter. Bin leider nicht so gut in python kann auch sein das da jetzt ein doofer Fehler drinnen ist, ich glaube aber nicht ;D |
||
Anmeldungsdatum: Beiträge: 11248 Wohnort: München |
Du brauchst z.B. eine Funktion, die (hier im Beispiel beim Druck eines Buttons) eine Instanz der Klasse Third erstellt und den Inhalt des Eingabefeldes übergibt:
Das Beispiel sollte direkt lauffähig sein ☺ |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 36 |
so also ich glaub es ist das beste wenn ich meinen text (gekürzt) poste: root=Tk() class second(): def __init__(self,master): Eingabe=Entry(root) Eingabe.insert(0,'blaa') Eingabe.pack(side=RIGHT) class third(): def __init__(self,second,master): self.Eingabe=second.Eingabe m=Eingabe.get() def test(): print m so dann kommt der fehler: "class second has no atribute 'Eingabe'" ich hoffe jemand kann mir meinen Fehler zeigen |
||
Anmeldungsdatum: Beiträge: 11248 Wohnort: München |
Du musst noch angeben, dass die "Variable" Eingabe nicht nur für die init-Funktion von second gelten soll, sondern für die ganze Klasse also versuch es mal mit self.Eingabe |
||
![]() Anmeldungsdatum: Beiträge: Zähle... |
Affenkönig schrieb:
Kürz es beim nächsten Mal bitte so, dass man den Fehler per copy&paste nachvollziehen kann, so gibt das erstmal einen PS: Hast du dir schonmal das Tutorial angeguckt? |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 36 |
also bei mir funktioniert es jetzt! Es gab ein problem wenn ich in der Klasse "second" die variable mit "self.Eingabe=Entry()" erstellt habe. Wenn ich sie mit "second.Eingabe=Entry()" erstellt habe konnte ich sie ohne probleme mit "second.Eingabe.get() auslesen" Ich bedanke mich für die Hilfe und Mühe und hoffe das ich jetzt ohne Probleme voran komme 😉 |
||
Ehemalige
![]() Anmeldungsdatum: Beiträge: 4673 Wohnort: Berlin |
@Affenkönig: Das ist aber falsch. Jetzt hast Du das als *Klassenattribut* abgelegt und nicht an das Exemplar gebunden. Das ist unsauber. Du solltest vielleicht doch noch mal einen Schritt zurückgehen und die Grundlagen lernen und erst mit GUIs anfangen, wenn Du Klassen verstanden hast. |