komme nicht weiter

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
StMan
User
Beiträge: 17
Registriert: Sonntag 11. Januar 2026, 17:48

hallo zusammen,
ich versuche mit Python + tkinter ein Fenster zu bauen. Ich hab schon mehrere Stunden damit verbracht, beckomme es aber einfach nicht hin. irgend ein Eintrag ist immer an der falschen Stelle.
Gibt es vielleicht ein einfaches Tool das diese Arbeit erleichtert?
Es soll die Große 800x 600 haben.
Ich möchte davon ein Bild hier anzeigen, bekomme es aber nicht hin.
Gruß Manfred
Sirius3
User
Beiträge: 18354
Registriert: Sonntag 21. Oktober 2012, 17:20

Die Anordnung der Elemente erfolgt automatisch korrekt, wenn man sich an Frames und Grids hält.
Eine Absolute Größe sollte man eh nicht angeben.
Wenn die minimalistische Form von tkinter aus irgendwelchen Gründen nicht ausreicht, solltest Du Dir ein anderes Framework anschauen.
Benutzeravatar
Dennis89
User
Beiträge: 1673
Registriert: Freitag 11. Dezember 2020, 15:13

Was immer Sinn macht, ist den Code, den man hat, hier in Code-Blocks zu posten. Dann kurz beschreiben was er machen soll und was er stattdessen macht. (Oder ein Minimalbeispiel, an dem man das Problem erkennen kann).

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
snafu
User
Beiträge: 6921
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

StMan hat geschrieben: Mittwoch 28. Januar 2026, 20:12 Gibt es vielleicht ein einfaches Tool das diese Arbeit erleichtert?
Naja, ich hatte letztens mit Tkinter ein erstaunlich gutes und robustes Layout hinbekommen als ich einfach die KI von Google in Prosa befragt hatte. Alleine wäre ich da nicht drauf gekommen mit Sticky und irgendwelchen Vorkonfigurationen, damit sich die Widgets bei Größenveränderungen am Fenster auch korrekt anpassen. Wirkte auf mich nicht wirklich intuitiv. Das Layout System von Qt finde ich da wesentlich einfacher, besonders wenn man den Designer benutzt.
Benutzeravatar
snafu
User
Beiträge: 6921
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Dennis89 hat geschrieben: Mittwoch 28. Januar 2026, 21:03 (Oder ein Minimalbeispiel, an dem man das Problem erkennen kann).
Am Minimalbeispiel dann aber auch unbedingt testen, ob der Fehler tatsächlich damit auftritt. Oft neigen diese Beispiele dazu, dass mindestens ein wesentlicher Punkt fehlt, in dem der eigentliche Fehler steckt.
Benutzeravatar
StMan
User
Beiträge: 17
Registriert: Sonntag 11. Januar 2026, 17:48

Naja, ich hatte letztens mit Tkinter ein erstaunlich gutes und robustes Layout hinbekommen als ich einfach die KI von Google in Prosa befragt hatte. Alleine wäre ich da nicht drauf gekommen mit Sticky und irgendwelchen Vorkonfigurationen, damit sich die Widgets bei Größenveränderungen am Fenster auch korrekt anpassen. Wirkte auf mich nicht wirklich intuitiv. Das Layout System von Qt finde ich da wesentlich einfacher, besonders wenn man den Designer benutzt.
So geht es mir auch, wenn ich denke so sieht es gut aus, und füge nochmal ein label oder entry usw. hinzu, ist wieder alles verstrubel.
Das liegt mit Sicherheit an der Unerfahrenheit eines Anfängers. Wenn aber etliche Stunden damit verbracht wurden, und nach hunderten Versuchen sich wieder am Anfang befindet, verliert man so langsam die Lust .
Deshalb habe ich auch in diese Richtung gedacht, leider kann ich zu Qt nichts finden.
Gruß Manfred
Pedroski55
User
Beiträge: 35
Registriert: Freitag 25. Juli 2025, 00:20

Kann nicht sooo schwer sein!

Leute sagen dies:

Code: Alles auswählen

from tkinter import *
ist nicht so gut. Hole nur was du brauchst, nicht alles mit dem *!

Verändere was du willst in der kleinen Function, man gucken wie das sich auswirkt! Es kann ja nicht explodieren, oder?

Code: Alles auswählen

import tkinter as tk

def windoze():
    fen = tk.Tk()
    fen.geometry("200x200")
    message = tk.Label(fen, text="Ich habe keine Lust!")
    message.pack()
    fen.mainloop()
In deiner IDE starte windoze() Und wenn du compiz wobbly windows installiert hast, kannst du das Fensterlein über dem Bildschirm wackeln!

Sitze nie allein mit so einem Problem, es gibt einfach so viele Infos im Netz der Netze! Hier ein Beispiel
Benutzeravatar
snafu
User
Beiträge: 6921
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

StMan hat geschrieben: Mittwoch 28. Januar 2026, 21:23 (...) leider kann ich zu Qt nichts finden.
Wie meinst du das? Einfach "python qt" in die Suche eingeben findet massig Treffer.
Benutzeravatar
Dennis89
User
Beiträge: 1673
Registriert: Freitag 11. Dezember 2020, 15:13

Pedroski55 hat geschrieben: Donnerstag 29. Januar 2026, 01:35 Kann nicht sooo schwer sein!
Für jemanden der noch nie eine GUI erstellt hat, ist es nicht ganz so einfach. Wenn es nicht "soooo" schwer ist, dann hätte dein Beispiel auch den gewünschten Anwendungsfall abbilden können. Aber das macht ja gar nichts.

Qt würde ich persönlich erst verwenden, wenn man wirklich verstanden hat, wie man die Logik einer GUI programmiert.
Der Designer ist schön, aber auch hier muss man mit Grid's und Layout's arbeiten, damit die Elemente an Ort und Stelle bleiben bzw. sich je nach Fenstergröße ordentlich anpassen.
Tkinter als Einstieg finde ich gut um zu verstehen wie man Elemente anordnen muss und auch wie die Programmlogik aussehen muss.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
noisefloor
User
Beiträge: 4289
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Das liegt mit Sicherheit an der Unerfahrenheit eines Anfängers. Wenn aber etliche Stunden damit verbracht wurden, und nach hunderten Versuchen sich wieder am Anfang befindet, verliert man so langsam die Lust .
Genau das ist der Punkt und dein Fehler bzw. falscher Ansatz: nur weil wir GUIs und Fenster gewohnt sind, heißt das _nicht_, dass das einfach ist. Außerhalb von mega-trivialen GUIs sollte man tunlichst immer Klassen verwenden, um die GUI zu erstellen. Und ich würde behaupten: an dem Punkt bist du noch nicht. Und bei einfachen Applikationen mit GUI ist es so, dass der Code für die GUI selber gerne 3-10 mal so lang ist wie der Applikationscode selber. Plus: was in der GUI abläuft, ist _nicht_ linear, sondern wird vom Event-Loop der GUI kontrolliert. Das Konzept muss man halt auch verinnerlichen und umsetzen. Dazu gehört dann auch z.B., dass man in GUIs i.d.R. keine for-Schleifen oder while-Schleifen verwendet, weil die die GUI blockieren können.

Also besser erstmal bei den Grundlagen sattelfest sein und mit Textausgaben arbeiten, bevor man auf eine GUI "springt".

2. Fehler: wieder keinen Code gezeigt, wieder das Problem nur in Volltextprosa beschrieben. Solange du das bei dir nicht abstellst, ist es auch schwierig bis unmöglich, dir zu helfen.

Gruß, noisefloor
Benutzeravatar
StMan
User
Beiträge: 17
Registriert: Sonntag 11. Januar 2026, 17:48

@noisefloor ich gebe Dir zu 100% recht, aber es ist schwer als Anfänger aus dem Netz die richtige Antwort zu finden.
Mein erster Fehler war, dass ich alles in dem root angeordnet habe. Jetzt bin ich ein Schritt weiter und habe Frames erstellt, damit sieht es schon besser aus.
Aus der Info im Netz werde ich nicht so richtig schlau. Die einen schreiben Container erstellen und frames rein, die anderen schreiben frames erstellen und container rein 😕.
Einer schreibt in frames nur pack verwenden, der andere schreibt grid ist viel besser, wieder ein anderer schreibt place ist die "eierlegende Wollmilchsau". Der nächste schreibt, Finger weg von place.
Zu Code anzeigen: Mein Code anzeigen wäre zu gefährlich gewesen, es hätten sich bestimmt einige totgelacht.😂 Aber es wird besser.
Gruß Manfred
Benutzeravatar
sparrow
User
Beiträge: 4631
Registriert: Freitag 17. April 2009, 10:28

place zu verwenden ist falsch.
Im Prinnzip musst du dir das so vorstellen, dass du dass Layout nicht fest vorgibt, sondern dass du beschreibst, wie die GUI aussehen soll. Das tatsächliche Aussehen generiert dann das Framework für dich.

Ea gibt heutzutage zu viele Einflüsse, die die Darstellung beeinflussen. Auflösung, DPI, Schriftgröße, etc.
Nur weil bei dir mit place gesetzte Elemente hintereinander platziert sind, könnten sie bei mir überlappen oder ewig weiter von einander entfernt sein, weil ich ein anderes Setup habe.
Benutzeravatar
__blackjack__
User
Beiträge: 14286
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@StMan Es gibt da ja eigentlich nur `Tk`, `Toplevel`, und `Frame` (und ggf. noch `Canvas`) die andere Widgets aufnehmen, also sind `Frames` auch Container und `Tk` und `Toplevel` kann man nicht in `Frame` stecken. Somit machen die Formulierungen „Container erstellen, und Frames rein“ und „Frames erstellen, und Container rein“ beide nicht so wirklich Sinn, weil das auf „Frames erstellen, und Frames rein“ hinaus läuft.

Bei der GUI-Gestaltung mit Tkinter, und fast allen moderneren GUI-Rahmenwerken auch, ordnet man die Elemente mittels Layouts an. Minimal bieten die alle mindestens Elemente horizontal und vertikal zueinander anzuordnen, sowie ein Raster ähnlich einer Tabelle mit Spalten und Zeilen. Pro Container muss man sich für eine dieser Varianten entscheiden. Konkret bei Tk wäre das `pack()` horizontal, oder `pack()` vertikal, oder `grid()`. Genauer bei `pack()` eine der vier möglichen Seiten. Die kann man theoretisch zwar auch mischen, aber das führt praktisch früher oder später zu Problemen.

Zum Code zeigen: Du musst ja nicht den tatsächlichen Code zeigen, sondern ein minimales Beispiel welches das Problem demonstriert. Wenn Du keinen Code zeigst, kann man nicht sagen was falsch ist, oder besser/anders gemacht werden sollte.

Und auch ich möchte noch mal Anmerken, dass GUI-Programmierung in aller Regel kein Anfänger-Thema ist. Dazu muss man alles von den Grundlagen, Programmfluss, Funktionen, und objektorientierter Programmierung (OOP) mit Klassen drauf haben, und da kommt dann mit der GUI-Programmierung noch ereignisbasierte Programmierung dazu.
“Programming is partially an artform and, like artists, programmers will do it even if they don't get money.” — Linus Torvalds
Benutzeravatar
grubenfox
User
Beiträge: 640
Registriert: Freitag 2. Dezember 2022, 15:49

StMan hat geschrieben: Donnerstag 29. Januar 2026, 10:34 Aus der Info im Netz werde ich nicht so richtig schlau.
Ich weiß nicht was du dir da schon alles angeschaut hast. Vielleicht hilft ja dies oder das:

https://realpython.com/python-gui-tkinter/
Wenn man dort auf realpython nach TKinter sucht, dann findet man auch ein Tutorial um Tic-Tac-Toe mit Tkinter zu bauen. Das ist schon deutlich komplexer...

https://www.python-kurs.eu/tkinter_layo ... gement.php

Mein Problem bei dieser Thematik: meine Python-Programme sind alle (aus Gründen!) für die Kommandozeile, ohne GUI. Ist deutlich stressarmer... ;)
Benutzeravatar
peterpy
User
Beiträge: 189
Registriert: Donnerstag 7. März 2013, 11:35

Hallo Manfred,

schau mal hier rein.
https://anzeljg.github.io/rin2/book2/24 ... index.html
Gruss Peter
Benutzeravatar
StMan
User
Beiträge: 17
Registriert: Sonntag 11. Januar 2026, 17:48

momentan habe ich ein Ereignis, das ich nicht begreife.
ich sammle in einem def vier Variablen als sammelstring = " , ".join([vorname, name, plz, ort])
übergebe den sammelstring in ein def in einem anderen Modul
dort printe ich print("sammelstring=",sammelstring)
Ergenis:
sammelstring= Hans, Meier, 10, Berin
sammelstring= Hans
wieso wird Hans nocheinmal ausgedruckt?
Gruß Manfred
Benutzeravatar
noisefloor
User
Beiträge: 4289
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

nochmal: kompletten, relevanten Code zeigen. Im Zweifelsfall zu viel. Und nicht Codezeilen in Erzählzeilen verwursteln.

Die `print` Funktion erzeugt genau eine Ausgabe - wenn du zwei Ausgaben hast, hast du wohl auch irgendwie irgendwo ein 2. `print`.

Gruß, noisefloor
Benutzeravatar
sparrow
User
Beiträge: 4631
Registriert: Freitag 17. April 2009, 10:28

@StMan: Ich glaube, wir haben das schon mehfach erwähnt:

Bitte zeige den Code, den du ausführst.
Du gehst doch auch nicht in die Werkstatt, sagst "In linkskurven quitescht es irgendo hintenvornelinksrechts, was ist das?"

Zeig bitte deinen Code, das was er tut, was du erwartest und poste den Code bitte in Code-Tags, damit die Einrückung erhalten bleibt. Die erscheinen automatisch, wenn du im vollständigen Editor </> klickst. Dazwischen gehöt dein Code.
Benutzeravatar
StMan
User
Beiträge: 17
Registriert: Sonntag 11. Januar 2026, 17:48

Hallo @sarrow
hier den oben beschriebene Code.

Code: Alles auswählen

def check_entries(): # Hole Text aus den vier Eingabefeldern 
        texts = [e.get() for e in [eg_host, eg_name, eg_pw,]] 
        all_filled = all(len(t) > 0 for t in texts) and  eg_Datenbank.cget("text").strip()  # Prüfe, ob jedes Feld mindestens ein Zeichen hat ( Buchstaben oder Zahlen)
        
        if all_filled:
                host = eg_host.get()
                name = eg_name.get()
                pw = eg_pw.get()
                db = eg_Datenbank.cget("text")
                sammelstring = " , ".join([host, name, pw, db])
                login(sammelstring)
                result = login(name) 
                print("result",name)
        else:

Code: Alles auswählen

def login(sammelstring)-> str: 
        # Verarbeitung des übergebenen Strings 
        print("sammelstring ",sammelstring)
console:
sammelstring host , namename , pwpw , 456456 (wurde so in die Entrys eingegeben)
sammelstring namename
result namename
Gruß Manfred
Benutzeravatar
sparrow
User
Beiträge: 4631
Registriert: Freitag 17. April 2009, 10:28

Zum Code werdem sicher noch Verbesserungen kommen, aber was denkst du, was diese beiden Zeilen tun?

Code: Alles auswählen

                login(sammelstring)
                result = login(name) 
Antworten