TKinter Problem (nocheins -.-)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Doom hat geschrieben:Ich weiß ja nicht wa smit einrücken hier bei mir gemeint ist
Und DESHALB sollst du das Tutorial durcharbeiten.
Und mehr nachdenken! Und genauer lesen (am besten auch deine eigenen Beiträge, bevor du sie abschickst!).
Benutzeravatar
Doom
User
Beiträge: 39
Registriert: Donnerstag 2. September 2010, 15:14
Wohnort: Bonn
Kontaktdaten:

Weil ich hier hängen bleibe ich lerne ja gerade verdammt.
Benutzeravatar
Doom
User
Beiträge: 39
Registriert: Donnerstag 2. September 2010, 15:14
Wohnort: Bonn
Kontaktdaten:

Also ob ich nicht programmieren kann?!
Ich kann HTML, Visual Basic, PHP, C++ und Delphi
Ich bitte euch, nur weil ich Python nicht auf die Reihe kriege muss
das nicht dazu führen, dass ich überhaupt nicht proggen kann -.-
BlackJack

@Doom: Du kannst mir nicht erzählen dass Du C++ kannst, aber hier an der Einrückung scheiterst. Das klingt unglaubwürdig, um es mal vorsichtig zu sagen.
Benutzeravatar
Doom
User
Beiträge: 39
Registriert: Donnerstag 2. September 2010, 15:14
Wohnort: Bonn
Kontaktdaten:

Ich kanns aber -.-
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

HTML ist keine Programmiersprache, Visual Basic und PHP zählen nicht. Selbst wenn du aber Visual Basic, PHP, C++ und Delphi könntest hättest du keines dieser Probleme und würdest nicht so programmieren. Ich würde sogar soweit gehen, zu sagen, dass jemand mit der vorigen Erfahrung hier noch nichtmal Fragen stellen müsste, zumindest nicht zum lernen der Sprache.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Einrückung ist ein deutsches Wort, kein Fachterminus von Programmiersprachen oder gar Python: http://de.wiktionary.org/wiki/Einrückung
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Doom hat geschrieben:Weil ich hier hängen bleibe ich lerne ja gerade verdammt.
Kann es sein, dass du das Tutorial etwas hastig durchgeblättert hast? Ziemlich weit vorne findest du nämlich unter First Steps Towards Programming eine Erklärung für das Einrücken.
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

@cofi et al.
eigentlich wollt ich mich noch etwas entspannen, da lese ich dieses Scharmützel.Natürlich habt ihre Recht, aber ich weiß nicht, ob er "neue" das richtig verstanden hat.
Das Einrücken im Quellcode ist das Wesentliche der Sprache Python. Das gibts nicht in:
VB
Cpp
Fortran
etc.
Durch das Einrücken werden logische Blöcke zusammen gefasst.
In C macht man das mit Klammern so { und so }.
Das muß man drauf haben, sonst kann man nicht weiter machen!
In dieser Rubrik gabs letzte Woche 1 schönes beispiel , eine IF abfrage mit einrücken.
Das muß der Programmierer auf der Pfanne haben.
(das war jetzt Gelsenkirchener Platt)

Was sind denn Suiten? das ist mir auch noch nicht untergekommen!

Guude!
8) 8)
Fritz
BlackJack

@3ff: Einrücken im Quelltext gibt's auch in VB und C++. Wer das dort nicht macht, nur weil er nicht muss, ist IMHO kein Programmierer sondern ein Pfuscher. In den Sprachen ist es dem Compiler egal, aber Menschen müssen den Quelltext ja auch lesen können. Und da ist Einrücken um zusammengehörige Blöcke kenntlich zu machen in vielen Programmiersprachen Konvention.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

3ff hat geschrieben:Was sind denn Suiten? das ist mir auch noch nicht untergekommen!
Code-Bloecke werden in den BNFs der Referenz so bezeichnet: http://docs.python.org/reference/compound_stmts.html
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

@cofi,
stimmt, stimmt.
Hab grad meine Bibel durchgeblättert.
Martin von Löwis Python 2
if_stmt ::= 'if' test ':' suite
@BlackJack
In C rückt man ein, damit der Code besser lesebar ist.Klar.
Man könnte auch alles in 1 Zeile editieren der Compiler würd es auch verdauen.
In Python kann man das nicht, Einrückungen sind notwendig, damit die Syntax stimmt.
----------------------------------------------
Der C-Kompiler gcc und g++ ist 1 Zweilaufkompiler.
Erst werden symbolische Adressen erzeugt und dann im 2.Lauf werden die absoluten Adressen erzeugt, damit der Binder ein ablauffähiges Programm erzeugen kann, Zusammenstellen= Compilieren.
In Python wird doch zeile für Zeile interpretiert und der Interpreter prüft die Einrückungen, ob die Syntax stimmt.
Wenn die nicht stimmt, wird das Programm sofort abgebrochen.
In Python fehlt die Übersetzungszeit, das ist 1 ganz wesentlicher Vorteil von Python.
Zum Schluß wird auch 1 Bin-code erzeugt, das ist doch pyc. Sowie unter Win das pyw.
---------------------------------
Was bedeutet eigentlich IMHO? das Wort taucht auch öfter hier im Forum auf.
Guude!
Fritz 8) 8)
BlackJack

@3ff: Beim gcc erzeugt nicht der Compiler die absoluten Adressen, sondern der Binder. Der Compiler weiss ja noch gar nicht wie gross die einzelnen Code- und Datenteile sind, die vom Binder verarbeitet werden, kann also auch schlecht schon absolute Adressen bestimmen. Ich würde ihn auch nicht als 2-Pass-Compiler bezeichnen. Mit den Optimierungen ist das Bild doch ein wenig komplizierter.

Dein `"Zusammenstellen=Compilieren"` ist etwas irreführend, denn `Compilieren` wird in diesem Kontext als `Übersetzen` ins rein Deutsche übersetzt.

In Python wird nicht Zeile für Zeile interpretiert. CPython compiliert den Quelltext erst in Bytecode und dabei werden auch die `IndentationError` ausgelöst, wenn der Compiler unerwartete Abweichungen findet. Die ``*.pyc``-Dateien werden nicht zum Schluss, sondern am Anfang erstellt. Das ist ja der Bytecode der vom Interpretierer ausgeführt wird, also muss der logischerweise auch am Anfang erstellt werden.

``*.pyw`` werden nicht von Python erstellt. Das sind ganz normale Python-Quelltextdateien die unter Windows mit ``pythonw.exe`` statt ``python.exe`` verknüpft sind.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

3ff hat geschrieben:Was bedeutet eigentlich IMHO?
FYI: IMHO

HTH,
Matthias
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

@ /me,
lass mich nicht dumm bleiben, ich muß nächste Woche nach Spanien.
was oder wer oder wie ist IMHO?
@BlackJack
Der Binder ist Teil vom Gnu C-Compiler, oder?
Der Lader ld, der legt die absoluten Adressen fest.
CPython ist ein Python-dialekt?
pyw war etwas neu, aber ich arbeite nur mit Python. Mir sind allerdings schon Pogramme untergekommen, die liefen dann auch unter Python, das hat mich auch gewundert. Vor allem, weil MicroSoft häufig was eigenes strickt.
Die größte Neuigkeit, war das mit dem Pfadtrenner \ statt / wie unter Unix.
Wenn ich dann noch an Win3.0 denke...
Und die vielen Updates, alles advanced
Guude!
Fritz
8) 8)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

ld _ist_ der Binder/Linker und auch nicht Teil der GCC, sondern (im Falle von GNU) GNU binutils.

CPython ist die kanonische Python-Implementierung von python.org in C (hence the name)

Was IMHO angeht: Link klicken und lesen, das steht dort schwarz auf weiss (mit Google's CSS).
BlackJack

@3ff: Der Binder ist ein eigenständiges Programm. Genau wie der C-Compiler. Das Frontend-Programm ``gcc`` ruft die nur alle für einen im Hintergrund auf, zum Beispiel den Compiler ``cc`` und den Binder -- nicht Lader -- ``ld``. Ob der Binder alle relativen Adressen durch Absolute ersetzt, hängt von verschiedenen Faktoren ab. Zum Beispiel Zielformat und Zielplattform.

CPython ist die Python-Implementierung in C, die man von http://www.python.org/ bekommt. Insofern also weniger Dialekt als Referenzimplementierung.

``*.pyw`` sind ganz normale Python-Quelltexte. Der Unterschied ist nur der Interpreter der unter Windows mit dieser Endung verknüpft ist. Das ist auch ein ganz normaler Python-Interpreter der neben der ``python.exe`` installiert wird, wenn man sich Python für Windows von http://www.python.org/ installiert. Windows unterscheidet zwischen Konsolenanwendungen und Fensteranwendungen. Konsolenanwendungen haben (mehr oder weniger) zwingend ein Konsolenfenster und die üblichen Standard-Ein- und Augabekanäle. Fensteranwendungen haben beides nicht. Wenn man also in einer GUI-Anwendung nicht möchte, dass zusätzlich ein Textkonsolenfenster aufgeht wenn man das Programm startet, muss man es mit ``pythonw.exe`` starten.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo Doom

Du kannst dein Skript auch so schreiben:

Code: Alles auswählen

import tkinter

main = tkinter.Tk()

lb1 = tkinter.Label(main, text="groove", font="Courier 16 italic", height=2,
    width=20, bd=5, relief='groove', bg="#FFFFFF", fg="#000000", anchor='w')
lb1.pack()

main.mainloop()
Gruß wuf :wink:
Take it easy Mates!
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

@cofi,
hab das tutorium durchgelesen.
Super gemacht, etliche neue Aspekte für mich.
Sollte man jedem empfehlen, aber auch durcharbeiten.
Guude!
Fritz 8) 8)
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

hallo wuf,
in der pastbin liegt dein (etwas geändertes) Programm
hier:
http://www.python-forum.de/pastebin.php?mode=view&s=66
Auf meiner Platte ist python 2.5 installiert und das Modul python-tk fehlte, aber die Namen, die du den Variablen gegeben hast, waren falsch.
Ds ist für den Anfang auch wichtig, du findest die fehler nicht mehr.
Guude!
Fritz
Antworten