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.
DMD-OL
User
Beiträge: 315 Registriert: Samstag 26. Dezember 2015, 16:21
Samstag 16. Dezember 2017, 16:03
Ich versuche grade eine laufende Schleife möglichst sofort per Knopfdruck zu beenden.
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
import Tkinter
from Tkinter import Frame, Button
running = True
def scanning():
if running:
for element in range(5000):
print element
def stop():
global running
running = False
root = Tkinter.Tk()
app = Frame(root)
app.grid()
start = Button(app, text="Start", command=scanning).grid()
stop = Button(app, text="Stop", command=stop).grid()
root.mainloop()
Kann man die Schleife während des Laufens unterbrechen oder sogar beenden (was noch besser wär)?
Danke schon mal
__deets__
User
Beiträge: 14494 Registriert: Mittwoch 14. Oktober 2015, 14:29
Samstag 16. Dezember 2017, 16:52
So geht das nicht. Das wird hier aber wirklich JEDE Woche im Tkinter Forum diskutiert. Hast du schon mal ein bisschen hier gestöbert? Da wirst du ganz viel fündig wie man so etwas macht.
wuf
User
Beiträge: 1529 Registriert: Sonntag 8. Juni 2003, 09:50
Samstag 16. Dezember 2017, 18:13
Hi DMD-OL
Habe dein Skript leicht geändert. Da deine Anwendung Tk bezogen ist würde ich empfehlen sie im Unterforum für Tkinter zu plazieren :
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
try:
# Tkinter for Python 2.xx
import Tkinter as tk
except ImportError:
# Tkinter for Python 3.xx
import tkinter as tk
MAX_COUNT = 50
TIME_STEP = 100 # Milliseconds
LABEL_WIDTH = 3
LABEL_FONT = ('Helevetica', 20, 'bold')
def start():
if not root.running:
root.running = True
root.label_var.set(0)
counter()
def counter(count=0):
if not root.running: return
count += 1
if count == MAX_COUNT: stop()
root.label_var.set(count)
root.after(TIME_STEP, counter, count)
def stop():
root.running = False
root = tk.Tk()
root.config(relief='groove', bd=2)
root.running = False
root.label_var = tk.StringVar()
root.label_var.set(0)
app = tk.Frame(root)
app.grid(padx=4, pady=4)
tk.Label(app, textvariable=root.label_var, font=LABEL_FONT,
relief='sunken', bg='khaki', width=LABEL_WIDTH).pack(fill='x', pady=2)
tk.Button(app, text="Start", command=start).pack(pady=2)
tk.Button(app, text="Stop", command=stop).pack()
root.mainloop()
Gruss wuf
Take it easy Mates!