Wie starte ich die While Schleife in Python neu?

Hallo!

Ich programmiere aktuell einen "Vokabelabfrager". Dazu hätte ich eine Frage. Und zwar arbeite ich grafisch mit Tkinter. Doch ich bin gerade in einer While Schleife, in der alles funktioniert, aber dann will die While Schleife sich nicht mehr neustarten, denn sie hat schon erledigt was sie machen sollte, und will nicht weiter abfragen, weil sie dies schon gemacht hat.

Das ist ein Ausschit meines Codes:

weiter = False


def Prüfungs_Start():
    global weiter
    weiter = True
    while weiter == True:
        weiter = False
        Prüfungs_Start_Fenster = Tk()
        Prüfungs_Start_Fenster.title("Prüfung")
        Prüfungs_Start_Fenster.geometry("400x500")
        #Random Zeile finden
        Datei = open("Vokabeln.txt", "a")
        Datei = open("Vokabeln.txt", "r")
        Datei_Anzahl_Zeilen = 0
        for Zeile in Datei:
            Datei_Anzahl_Zeilen += 1
        Datei.seek(0)
        Randomzeile = randint(1, Datei_Anzahl_Zeilen)
        Zähler = 1
        for Zeilen_Inhalt in Datei:
            if Zähler == Randomzeile:
                Random_Zeilen_Inhalt = Zeilen_Inhalt
            Zähler += 1
        #2 Vokabeln, die in der ausgewählten Zeile stehen, in 2 Variablen speichern
        Ort = Random_Zeilen_Inhalt.find("'")
        TestVokabel1 = Random_Zeilen_Inhalt[0:Ort]
        TestVokabel2 = Random_Zeilen_Inhalt[Ort+1:-1]
        Label(Prüfungs_Start_Fenster, text = f"Ausgangs-Vokabel: {TestVokabel1}", font = "Arial_Black 20").place(x = 10, y = 10)
        Eingegebenes_Ergebnis = Entry(Prüfungs_Start_Fenster)
        Eingegebenes_Ergebnis.place(x = 10, y = 50)
        def Prüfung():
            if Eingegebenes_Ergebnis.get() == TestVokabel2:
                Label(Prüfungs_Start_Fenster, text = "Richtig!         ", font = "Arial 21", fg = "green").place(x = 10, y = 180)
            else:
                Label(Prüfungs_Start_Fenster, text = "Leider falsch", font = "Arial 21", fg = "red").place(x = 10, y = 180)


        Button(Prüfungs_Start_Fenster, text = "Fertig", command = Prüfung).place(x = 10, y = 100)
        def Weiter():
            global weiter
            weiter = True
            Prüfungs_Start_Fenster.destroy()
        Button(Prüfungs_Start_Fenster, text = "Weiter", command = Weiter).place(x = 10, y = 130)

Nun habe ich hinten diesen "Weiter" Button, der die Variable "weiter" wieder auf einen anderen Wert weisen soll, um die While Schleife wieder laufen zu lassen. Das möchte sie aber wohl nicht, denn sie hat ja schon abgefragt und da hat es nicht gestimmt.

Wenn ihr wisst, wie ich es schaffen kann, dass die While Schleife neu abfragt, bitte hilft mir,

euer Alex

programmieren, Programmiersprache, Python, Tkinter
Datei finden Fehler?

Hallo,

ich mache ein Programm in Python (mit Turtle), welches erkennt wo die ISS ist. Aber (obwohl es in demselben Ordner ist) findet es die Datei 'map.gif' nicht. Kann mir da jemand helfen?

Danke im voraus!

Code:

import json
import turtle
import urllib.request


url = 'http://api.open-notify.org/astros.json'
antwort = urllib.request.urlopen(url)
ergebnis = json.loads(antwort.read())


print('Personen im Weltall: ', ergebnis['number'])


personen = ergebnis['people']
#print(personen)



for p in personen:
    print(p['name'], 'in', p['craft'])


url = 'http://api.open-notify.org/iss-now.json'
antwort = urllib.request.urlopen(url)
ergebnis = json.loads(antwort.read())


standort = ergebnis['iss_position']
breitengrad = float(standort['latitude'])
längengrad = float(standort['longitude'])
print('Breitengrad: ', breitengrad)
print('Längengrad: ', längengrad)


bildschirm = turtle.Screen()
bildschirm.bgpic("map.gif")

Fehlermeldung:

File "/home/pi/Dokumente/Python programme/Standart/Wo ist die ISS?", line 29, in <module>
    bildschirm.bgpic("map.gif")
  File "/usr/lib/python3.7/turtle.py", line 1481, in bgpic
    self._bgpics[picname] = self._image(picname)
  File "/usr/lib/python3.7/turtle.py", line 479, in _image
    return TK.PhotoImage(file=filename)
  File "/usr/lib/python3.7/tkinter/__init__.py", line 3545, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "/usr/lib/python3.7/tkinter/__init__.py", line 3501, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "map.gif": no such file or directory
Python, Python 3, Tkinter
Python Tkinter clear geht nicht?

```File "C:\Users\Marek\energyECO\Gewinnspiel\clearEntry.py", line 9, in register_user

   vorname_entry.delete(0, END)

AttributeError: 'NoneType' object has no attribute 'delete'```

Das ist der Error

Und das der Code:

from tkinter import *
import csv

def register_user():
    vorname_info = vorname.get()
    nachname_info = nachname.get()
    email_info = email.get()

    # open the file in the write mode
    with open('Benutzernamen.csv', 'a', newline='', encoding='UTF8') as f:
        # create the csv writer
        writer = csv.writer(f, delimiter =';')
        # write a row to the csv file
        row=[vorname_info, nachname_info, email_info]
        writer.writerow(row)
        # close the file
        f.close()

    #vorname_entry.delete(0, END)
    #nachname_entry.delete(-0, END)

    Label(screen1, text="energyECO")

    vorname_entry.delete(0, 'end')
    nachname_entry.delete(0, 'end')
    email_entry.delete(0, 'end')


def register():

    global screen1
    screen1 = Toplevel(screen)
    screen1.title("Gewinnspiel")
    screen1.geometry("550x500")

    global vorname
    global nachname
    global email

    vorname = StringVar()
    nachname = StringVar()
    email = StringVar()

    global vorname_entry
    global nachname_entry
    global email_entry

    Label(screen1, text="Bitte tragen sie ihren Vor- und Nachnamen und außerdem ihre E-Mail ein", font=('Arial 15')).pack()
    Label(screen1, text=" ").pack()
    Label(screen1, text="Vorname * ", font=('Arial 12')).pack()
    vorname_entry = Entry(screen1,width=50, font=('Arial 20'), textvariable=vorname).pack()
    Label(screen1,text=" ").pack()
    Label(screen1, text="Nachname * ", font=('Arial 12')).pack()
    nachnamne_entry = Entry(screen1,width=50, font=('Arial 20'), textvariable=nachname).pack()
    Label(screen1,text=" ").pack()
    Label(screen1, text="E-Mail * ", font=('Arial 12')).pack()
    email_entry = Entry(screen1,width=50, font=('Arial 20'), textvariable=email).pack()
    Label(screen1,text=" ").pack()
    Label(screen1,text=" ").pack()
    Label(screen1,text=" ").pack()
    Label(screen1, text="Mit der Teilnahme am Gewinnspiel und der Eingabe meine Daten erkläre ich mich bereit, den E-Mail Newsletter von energyECO monatlich zu erhalten.", font=("Arial 10")).pack()
    Label(screen1,text=" ").pack()
    Button(screen1, text="Daten senden", font=('Arial 20'), width="15", height="2", command=register_user).pack()


def close():
    print("Closed!")
    screen.destroy()
    screen1.destroy()

def main_screen():
    global screen
    screen = Tk()
    screen.geometry("300x250")
    screen.title("energyECO")

    Label(text="energyECO", bg="gray", width="300", height="2", font=("Calibri", 13)).pack()
    Label(text=" ").pack()
    Button(text="Gewinnspiel", height="2", width="30", command=register).pack()
    Label(text=" ").pack()
    Label(text=" ").pack()
    Label(text=" ").pack()
    Button(text="Close", command=close).pack()
    Label(text=" ").pack()

    screen.mainloop()

main_screen()
Python 3, Tkinter
Tkinter Button funktioniert nicht und Canvas Delete funktioniert nicht Bitte Hilfe?

Sehr geehrte Python und Tkinter Fans,

ich habe 2 Probleme. Und zwar ich möchte das wenn ein Knopf gedrückt wird 2 weitere Knöpfe am display erscheinen die man drücken kann. Ein Knopf z.B. "Ja" und der andere Knopf "Nein". Aber sie funktionieren nicht. Und wie kann ich es machen falls auf Nein gedrückt wird, dass dann die Buttons wieder verschwinden?

Mein Code:

def yes_option():
    root.destroy()


def close_root(event):
    assistant_lady_canvas =canvas.create_image(400, 540, image=assistant_lady, anchor=tk.NW)
    assistant_text = canvas.create_text(1400, 500, text="Möchten sie, das Spiel beenden?", fill="black", font=("Courier", 20, "bold"))
    canvas.create_image(0, 0, image="", anchor=tk.NW)
    #root.destroy()

    def close_root_destroy():
        canvas.delete(assistant_lady_canvas)
        canvas.delete(assistant_text)
        canvas.update()
        root.destroy()

    yes_button = canvas.create_image(1280, 600, image=yes)
    canvas.tag_bind(yes_button, "<Button-1>", yes_option)

    no_button = canvas.create_image(1520, 600, image=no)
    canvas.tag_bind(no_button, "<Button-1>", close_root_destroy)

Error:

Exception in Tkinter callback

Traceback (most recent call last):

 File "C:\Users\nicol\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__

  return self.func(*args)

TypeError: yes_option() takes 0 positional arguments but 1 was given

Vielen Dank im Vorraus!

Computer, programmieren, canvas, Python, game-development, Tkinter
Tkinter Button muss in bestimmten Zeitpunkt gedrückt werden?

Ich möchte mit tkinter (Python) einen Button machen, der in einer bestimmten Zeit gedrückt werden muss, ansonsten soll

print("failedTime")

ausgegeben werden.

Mein Code:

from tkinter import *
import random

xr = 40
yr = 40

global hitButton

def restartGame():
    root.destroy()
    Main()

def noCommand():
    print("no command executed")

def failEvent():
    global hitButton
    print("failed")
    OverLabel = Label(image=GameOverIMG)
    OverLabel.place(x=200, y=80)
    print("test")
    hitButton.place(x=232323, y=232323)
    bRestart = Button(root, text="Restart", fg="WHITE", bg="BLACK", command=restartGame, width=5, height=3)
    bRestart.place(x=200, y=700)

def ButtonHitEvent():
    global xr
    global yr
    xr = random.randint(40, 1800)
    yr = random.randint(40, 1000)
    hitButton.place(x=xr, y=yr)

def Main():
    global hitButton
    global ButtonImg
    global ClearIMG
    global clearLabelGameOver
    global ButtonWindow
    global hitButton
    global GameOverIMG
    global root

    root = Tk()
    root.geometry("1920x1080")

    ButtonImg = PhotoImage(file="C:/Users/jakob/AppData/Local/Programs/Python/Python39/Scripts/Scripts/Python/Tkinter/graphics/ButtonClick.png")
    GameOverIMG = PhotoImage(file="C:/Users/jakob/AppData/Local/Programs/Python/Python39/Scripts/Scripts/Python/Tkinter/graphics/GameOver.png")
    ClearIMG = PhotoImage(file="C:/Users/jakob/AppData/Local/Programs/Python/Python39/Scripts/Scripts/Python/Tkinter/graphics/clear.png")

    clearLabelGameOver = Label(root, image=ClearIMG)
    clearLabelGameOver.place(x=300, y=200)

    ButtonWindow = Button(root, text=" ", width=300, height=300, command=failEvent, background="BLACK", foreground="BLACK").pack()

    hitButton = Button(root, image=ButtonImg, command=ButtonHitEvent, fg="BLACK", bg="BLACK")
    hitButton.place(x=40, y=40)

    root.mainloop()

if __name__ == '__main__':
    Main()
Computer, programmieren, Python, Tkinter

Meistgelesene Beiträge zum Thema Tkinter