Verwendung von sticky

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Freaks,
    ich übe mich tapfer in Python 2.7/Tkinter und habe diesen Codeauszug:

    from Tkinter import *
    .
    root=Tk()
    .
    .
    erg=Label(root, ...
    erg.grid(row=5, column=0, sticky=E+W)

    Sticky funktioniert!
    Nun lese ich, dass die Verwendung von "from Tkinter import *" unschicklich und ressourcenfressend ist und schreibe

    import Tkinter as tk
    .
    root=tk.Tk()
    .
    .
    erg=tk.Label(root, ...
    erg.grid(row=5, column=0, sticky=E+W)

    und erhalte für sticky eine Fehlermeldung.
    Ich muss es anders notieren: sticky='ew'

    Warum muss ich das jetzt anders notieren?
    Wie umschreibe ich dieses Problem, mit "Namensraum"?
    Wo finde ich eine Liste (möglichst offline) in der ich das nachlesen kann? Je Einzelfall googeln ist auch blöd.
    Woher weiß ich, welche Module ich aus der Bibliothek importieren muss (z.B. string, serial etc.), bevor ich die Fehlermeldung bearbeite?

    Viele Fragen, ich weiß!

    vG
    der_kps


  • Warum muss ich das jetzt anders notieren?

    Schau Dir mal Folgendes an:

    Zur Erklärung: Die eingebaute Funktion "dir(Objekt)" zeigt Dir eine Liste der Attribute des Objekts, also quasi ein Inhaltsverzeichnis an. Im Falle eines importierten Moduls sind diese Attribute die vom Modul definierten Funktionen und Konstanten. Tkinter definiert 2 Konstanten E und W vom Typ 'str' mit den Werten 'e' und 'w'. Auf diese kannst Du nach dem import mittels tk.E und tk.W zugreifen. Wenn Du den Ausdruck "from Tkinter import *" verwendest, importierst Du alle diese Attribute in Deinen globalen, richtig:


    Wie umschreibe ich dieses Problem, mit "Namensraum"?

    Das heißt, Du kannst dann auch ohne vorangestelltes "tk." auf sie zugreifen. Dadurch wird E zu 'e', W zu 'w', und damit E+W zu 'e'+'w' zu eben 'ew'. Wenn Du "import Tkinter as tk" verwendest, musst Du dementsprechend entweder tk.E+tk.W oder eben direkt 'ew' verwenden.

    So weit klar?


    Wo finde ich eine Liste (möglichst offline) in der ich das nachlesen kann? Je Einzelfall googeln ist auch blöd.

    https://docs.python.org/2.7/

    Im Ernst, die offizielle Python-Dokumentation ist m.E. sehr gut und ausgezeichnet als Nachschlagewerk in Deinem Sinne geeignet.


    Woher weiß ich, welche Module ich aus der Bibliothek importieren muss (z.B. string, serial etc.), bevor ich die Fehlermeldung bearbeite?

    Du musst die Module importieren, deren Funktionen (oder Konstanten) Du nutzen willst. Dort, wo Du auf die Funktion gestoßen bist, sollte auch stehen, zu welchem Modul sie gehört. Oder habe ich Deine Frage falsch verstanden?

  • Was noch anzumerken ist: Sternchenimporte ala 'from Tkinter import *' sind eine schlechte Idee, das sie dazu fuehren, das der Modulnamensraum zugegoebelt wird mit allen Namen, die eben Tkinter schon hat. Da weiss man dann spaeter nicht mehr, was woher kommt, oder schlimmer noch bekommt Namenskollisionen. Darum entweder "import Tkinter as tk" oder "from Tkintert import (a, b, c, d)", also explizit angeben, was man will.

  • Hallo und vielen Dank für die sehr umfangreiche Antwort!!!

    Es ist schwierg, wenn man die Programmierei nicht von der Peike auf gelernt hat und sich zu oberflächlich mit Tutorials und schnellen Ergebnissen befasst hat. Geht mir in C# auch so. Allein der kompetente Umgang mit Begriffen wie Objekt, Methode, Attribut, Funktion, Parameter etc.
    Persönlich frustet mich das. Aber ich bleibe dran!

    Ich möchte jetzt keinen Chat öffnen, betrachte das Thema aber auch vor dem Hintergrund 'Berufsschule E-Technik', besonders Fachoberschule.
    Grafische Programmierung mit LOGO!-Soft oder Step7 in der Steuerungstechnik geht. Man klickt sich einen Funktionsplan zusammen und das Förderband bewegt sich. Flowcode für PICs von MIcrochip geht auch (Lauflichter wie auf der Kirmes). Assembler geht garnicht! Vielzuviel Einarbeitung und dann auch noch in Englisch. Aber alle wollen in die Automatisierungstechnik, am besten sofort M.Sc. und dann Dr. mit 10.000 monatlich (Anfangsgehalt versteht sich).
    PIC-Assembler ist Teil der Facharbeiterausbildung! FOS-Schüler mögen das aber nicht.
    Die Kombination aus Python+Tkinter (GUI: wichtig für die Motivation!) am populären Raspberry Pi ist, wenn man es zielführend aufziehen will, nicht trivial.
    Das Pretzelboard habe ich auch schon angetestet. Man ist sofort im IOT (sehr populär), aber der Code-Mix aus C und AT-Befehlen ist schlecht lesbar und schwer nachvollziehbar. Codeschnipsel aneinander hängen, vielleicht etwas modifizieren, würde schnelle Ergebnisse bringen, aber keine zielführenden Erkenntnisse, die später ausbaufähig sind. S.o., wenn die Grundlagen fehlen.
    Ach ja, ich habe ja nur noch 4 Jahre vor der Brust. Mal sehen vielleicht steige ich doch noch um von PIC auf ...
    Privat wechsle ich regelmäßig. Jetzt ist gerade Python/Tkinter-Zeit

    vg
    der_kps

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!