Problem bei Code in datein aufteilen und Problem dabei eine Class mit tkinter widgets richtig aufzubauen

Fragen zu Tkinter.
Antworten
anonym96

Hallo
ich bin gerade dabei ein Quiz zu programmieren doch hänge fest.
Was ich vor habe:
ich möchte das wenn ein Button gedrückt wird das dann ein Frame mit seinen widgets also die ihn als Master haben platziert wird.
Wie ich es machen möchte bzw denke wie es gehen wird:
Ich habe mir gedacht das ich einfach eine neue Datei erstelle (damit es übersichtlich bleibt)wo ich dann eine Class erstelle desen Inhalt einfach der frame mit seinen widgets ist und mit den funktionen der widgets also wenn es Buttons sind ist.Damit dann später einfach wenn in der Haubtdatei der button gedrückt wird diese Class platziert wird damit nämlich alles also der Frame und seine Buttons sofort da sind.
Die Problem die ich habe:
1Erst mal weiß ich nicht wie man so eine class aufzubauen hat falls es denn überhaupt so wie ich es meine funktionieren kann
2Der Frame der jetzt in der Class erstellt werden soll bekommt ja ein master den es in dieser Datei nicht gibt und das wird ja bestimmt ein Fehler geben also ist ein Problem sowieso das ich gar nicht wieß wie ich mein Code richtig in Datein aufteile

Code: Alles auswählen

from tkinter import *

class Einstellungsscreen:
     def __init__(self):
        schliessenicon=PhotoImage(file="Grafiken/Buttons/Schliessen.png")
        lautstärke0icon=PhotoImage(file="Grafiken/Labels/Lautstärke 0.png")
        lautstärke1icon=PhotoImage(file="Grafiken/Labels/Lautstärke 1.png")
        lautstärke2icon=PhotoImage(file="Grafiken/Labels/Lautstärke 2.png")
        lautstärke3icon=PhotoImage(file="Grafiken/Labels/Lautstärke 3.png")
        plusicon=PhotoImage(file="Grafiken/Buttons/Plus.png")
        minusicon=PhotoImage(file="Grafiken/Buttons/Minus.png")
        deutsch=PhotoImage(file="Grafiken/Labels/Deutsch.png")
        englisch=PhotoImage(file="Grafiken/Labels/Englisch.png")
    
        hintergrund=Frame(haupt,bg="#342f2f")
        schliessenbuttonE=Button(hintergrund,image=schliessenicon)
        plusbutton=Button(hintergrund,image=plusicon)
        minusbutton=Button(hintergrund,image=minusicon)
        lautstärke=Label(hintergrund,image=llautstärke3icon)
    
Es wäre toll wenn mir wer helfen kann
Sirius3
User
Beiträge: 18260
Registriert: Sonntag 21. Oktober 2012, 17:20

Es ist völlig egal in welcher Datei Klassen- oder Funktionsdefinitionen stehen, weil alles, was so eine Klasse bei der Initialisierung braucht, über ihre Argumente übergeben werden, als `haupt` muß ein Argument von __init__ sein. Sternchenimporte sind böse, tkinter wird üblicherweise als `import tkinter as tk importiert. Deine Klasse benutzt `self` gar nicht, das heißt auch, dass keines dieser Widgets nach __init__ noch referenziert werden kann und dass alle Bilder verschwinden, weil es keine Referenz mehr gibt. Ansonsten ist auch eine Klasse, die nur aus __init__ besteht, keine Klasse sonder nur eine umständlich geschriebene Funktion.
Benutzeravatar
__blackjack__
User
Beiträge: 14018
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@SvKaGli: Namen sollte man nicht nummerieren. Da will man entweder über passendere Namen nachdenken oder gar keine einzelnen Namen sondern eine Datenstruktur verwenden. Oft eine Liste. Bei den Lautstärkebildern ist das ziemlich sicher der Fall. Und beim Laden kann man dann auch eine Schleife oder „list comprehension“ verwenden, statt viermal fast identischen Code zu schreiben oder zu kopieren.

In den Namen fehlen Unterstriche. ManschreibtjaausgutenGrundauchsonstnichtalleWörtereinfachsozusammen.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
anonym96

@__blackjack__
Ich habe in meinen screens ordner eine __init__.py meinst du das
Und äh Sternchen importe äh ja das werd ich noch ändern aber ich wusste nur wann ich jetzt dann tk davor schreiben muss und wann nicht manch mal das nämlich falsch
Ja Unterstriche aber äh das wird doch nur ein Problem wenn es unlesbar wird
anonym96

@__blackjack__
Kannst mir den erklären wie ich so eine Klasse richtig aufbaue also mit tkinter sachen und so wäre toll
Sirius3
User
Beiträge: 18260
Registriert: Sonntag 21. Oktober 2012, 17:20

Für richtig, gibt es hier im Forum hunderte Beispiele. Zudem hast Du außer einer nichts-bewirkenden __init__-Methode nicht gezeigt, was Du eigentlich machen willst.
Benutzeravatar
__blackjack__
User
Beiträge: 14018
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@SvKaGli: Ichfinde dasauch jetztschon unlesbar. Auchwenn daimmer nurzwei Wortezusammen geschriebensind.

Es hält beim Lesen einfach auf und man kann die ganzen Namen die mit `icon` enden viel leichter von denen die mit `button` enden unterscheiden wenn diese Worte auch tatsächlich durch einen Unterstrich abgesetzt sind und nicht am Wort davor kleben.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
anonym96

@Sirius habe ich doch gesagt zeigen kann ich ja nur die nicht fertig Klasse. Und hast recht es gibt viele Möglichkeiten aber ich möchte nur gezeigt bekommen wie man das am besten macht OK hätte ich so schreiben sollen
Antworten