Seite 1 von 1
Python Code kann nur in IDLE ausgeführt werden
Verfasst: Sonntag 4. August 2024, 17:51
von RamonKunz
Wenn ich mein Programm über Python IDLE starte oder den Code in die Befehlszeile von Python kopiere, kann das Programm ohne Probleme ausgeführt werden. Wenn ich jedoch versuche die Python Datei anzuklicken oder den Befehl "python smart_lights.py" ausführe, beendet sich das Programm direkt nach dem Start. In VS Code ist es das gleiche Problem, wenn ich auf starten klicke.
Ich habe versucht, den PC neuzustarten, was jedoch nicht half.
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Montag 5. August 2024, 08:08
von Sirius3
Hast Du mehrere Python-Installationen?
Was meldet denn VS-Code in seinem Output-Bereich und was erscheint, wenn Du "python smart_lights.py" unter cmd.exe ausführst?
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Montag 5. August 2024, 09:16
von __blackjack__
@RamonKunz: Wo gibst Du denn den Befehl ``python smart_lights.py`` ein? in einer bereits offenen Eingabeaufforderung? Und da kommt dann sofort wieder der Prompt von der Shell?
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Montag 5. August 2024, 12:51
von RamonKunz
@Sirius3 Nein ich habe nur eine Python Installation auf meinem Windows System. Ich habe auch versucht, Python neuzuinstallieren. Leider aber ohne Erfolg. Ich habe auch beim System bereits eine Integritätsprüfung mit sfc /SCANNOW durchgeführt. Das System hat aber laut der Prüfung keine Fehler. Beim Output ist auch kein Hinweis zu finden.
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Montag 5. August 2024, 12:58
von RamonKunz
@__blackjack__ Ich habe den Befehl in einem neuen CMD Fenster ausgeführt, welches ich in den Ordner navigiert habe, wo die Datei gespeichert ist.
Ich habe auch probiert, das Programm über ein Batch Script zu starten. Hat leider auch nicht geholfen. Es taucht nur kurz eine Shell auf und verschwindet dann wieder.
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Montag 5. August 2024, 13:30
von __blackjack__
@RamonKunz: Wenn man das in einem bereits offenen CMD-Fenster macht, dann sollte das Programm *in diesem Fenster* laufen, beziehungsweise dort die Fehlermeldung ausgeben wenn es nicht läuft. Es taucht dabei kein neues Fenster auf.
Falls das mit dem Fenster nur den Versuch mit dem Batch-Skript meint: Vielleicht gibt Dein Programm auch einfach gar nichts aus. Was sollte denn ausgegeben werden? Woran machst Du fest, dass das Programm nicht das tut was es soll?
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Montag 5. August 2024, 14:19
von RamonKunz
@__blackjack__
Das Program gibt, wenn man es über IDLE startet, ein Tkinter Interface aus, mit 3 Schieberegler. Das passiert jedoch nicht, wenn man es über das Terminal oder über ein Batchscript startet. Doppelklick auf die Datei funktioniert auch nicht. Es ist irgendwie merkwürdig, dass es nur über Python IDLE funktioniert, aber wenn ich es auf andere Wege probiere, kommt nur ein CMD Fenster, welches sich sofort wieder schliesst.
Über IDLE startet sich das Interface ohne Probleme und die drei Schieberegler werden alle angezeigt.
Wenn ich den Befehl 'python smartlights.py' in einem offenen Fenster eingebe, kommt keine Fehlermeldung und es erscheint nur eine neue Zeile.
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Montag 5. August 2024, 14:32
von pillmuncher
RamonKunz hat geschrieben: Montag 5. August 2024, 14:19
Wenn ich den Befehl 'python smartlights.py' in einem offenen Fenster eingebe, kommt keine Fehlermeldung und es erscheint nur eine neue Zeile.
Kann es sein, dass du folgendes Konstrukt verwendet hast?
Code: Alles auswählen
try:
… # hier wird das tk-Fenster geöffnet
except:
return # oder: pass
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Montag 5. August 2024, 14:41
von __blackjack__
@RamonKunz: Was steht denn da konkret in der Datei drin?
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Montag 5. August 2024, 14:56
von Sirius3
@RamonKunz: es würde helfen, wenn Du Deinen Code zeigst.
Deiner Beschreibung nach, dass Du Tkinter benutzt würde ich raten, dass Du den Aufruf von mainloop vergessen hast.
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Donnerstag 8. August 2024, 11:38
von RamonKunz
@__blackjack__ In meiner Python Datei steht folgendes drin
Es muss jedoch an Python selbst scheitern, weil ich kein Python Programm mehr direkt starten kann. Auch mit dem Starten von vorherigen Projekten scheitert es.
:
from tkinter import *
root = Tk()
# kleinste Größe des Fensters
root.minsize(600, 800)
# Titel des Fensters
root.title("Smartlights")
# Erstelle ein Label Widget mit Text "Hello World!"
title = Label(root, text="Smartlights")
# Erstelle ein Frame Widget für die Slider und Titel
slider_frame = Frame(root)
# Erstelle drei Slider Widgets
slidertitle1 = Label(slider_frame, text="Red")
slider1 = Scale(slider_frame, from_=0, to=255,
orient=HORIZONTAL, troughcolor="red")
slidertitle2 = Label(slider_frame, text="Green")
slider2 = Scale(slider_frame, from_=0, to=255,
orient=HORIZONTAL, troughcolor="green")
slidertitle3 = Label(slider_frame, text="Blue")
slider3 = Scale(slider_frame, from_=0, to=255,
orient=HORIZONTAL, troughcolor="blue")
# Packe die Slider und Titel Widgets in das Frame
slidertitle1.pack()
slider1.pack()
slidertitle2.pack()
slider2.pack()
slidertitle3.pack()
slider3.pack()
# Packe das Frame Widget in das Fenster
slider_frame.pack()
# Slider Werte an Arduino senden
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Donnerstag 8. August 2024, 11:43
von RamonKunz
@Sirus3 Wenn ich im Terminal zuerst eine Python Shell öffne und den Code dort hineinkopiere, funktioniert der Code, aber ich kann ihn nicht durch einen Doppelklick auf smart_lights.py oder durch die Eingabe python smart_lights.py im Terminal starten.
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Donnerstag 8. August 2024, 12:46
von Sirius3
Das sieht nicht nach dem kompletten Code aus. Wie ich schon geschrieben hatte, fehlt zumindest der mainloop-Aufruf.
*-Importe benutzt man nicht, weil sonst nicht klar ist, woher welcher Name stammt. Man schreibt alles in Funktionen, da damit ein Programm besser gegliedert wird und globale Variablen verhindert werden.
Kommentare sollten erklären, warum etwas gemacht wird, ein Kommentar, dass ein Label mit "Hello World!" erzeugt wird, dann aber gar kein "Hello World" erscheint, ist sehr gefährlich, weil der Leser nicht weiß, was richtig und was falsch ist.
Das Label wird dann aber auch gar nicht benutzt.
Statt drei mal den selben Code zu scheiben, würde man eine Schleife benutzen.
Das ganze könnte dann ungefähr so aussehen:
Code: Alles auswählen
import tkinter as tk
def main():
root = tk.Tk()
root.title("Smartlights")
color_sliders = []
color_slider_frame = tk.Frame(root)
for color in ["Red", "Green", "Blue"]:
tk.Label(color_slider_frame, text=color).pack()
slider = tk.Scale(
color_slider_frame, from_=0, to=255, orient=tk.HORIZONTAL, troughcolor=color
)
slider.pack()
color_sliders.append(slider)
color_slider_frame.pack()
root.mainloop()
if __name__ == "__main__":
main()
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Donnerstag 8. August 2024, 13:01
von RamonKunz
@Sirius3
Das Programm kann immernoch nicht gestartet werden. Es muss an Python oder an meinem System liegen. Andere Projekte lassen sich auch nicht mehr öffnen. Ich habe wie beschrieben dieses Problem mit allen Python Programmen. wenn ich die Installation von Python prüffe wird mir die richtige Python version angezeigt aber ich kann trotzdem keine Python Programme direkt starten.
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Donnerstag 8. August 2024, 13:08
von Sirius3
Was gibst Du im CMD-Fenster ein und welche Meldung erscheint?
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Donnerstag 8. August 2024, 13:11
von RamonKunz
python smart_lights.py
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Donnerstag 8. August 2024, 13:13
von RamonKunz
oder meinst du den befehl zur überprüffung der Python version dann wäre es : python --version
Re: Python Code kann nur in IDLE ausgeführt werden
Verfasst: Donnerstag 8. August 2024, 13:30
von RamonKunz
Ich habe nun mein System um eine Woche zurückgesetzt und es funktioniert wieder alles. Keine Ahnung woran es gelegen hat. Ich möchte mich hiermit nun noch bedanken für eure Hilfe.