Hab' nur ein kleines Probelm:
ich starte mit einer Methode: winsound.Beep(3000,30) einen Ton (mit einem Button in Tkinter). Mit welchem Befehl kann ich denn alle laufenden Sounds wieder stoppen?
Danke schon mal...
Winsound - alle Sounds stoppen
@zappa: Stecker ziehen. Entweder den zu den Lautsprechern, oder den Netzstecker. 

-
- User
- Beiträge: 53
- Registriert: Donnerstag 15. April 2010, 20:34
Setze beim Start deines Sounds eine Variable auf "True".
Wenn du den Sound beenden möchtest überprüfst du die Variable, wenn sie "FALSE" ist, dann stoppt der Sound.
Wenn du den Sound beenden möchtest überprüfst du die Variable, wenn sie "FALSE" ist, dann stoppt der Sound.
-
- User
- Beiträge: 53
- Registriert: Donnerstag 15. April 2010, 20:34
Ähm - doch.
Aber ich geb schon zu, habe mich sehr unklar ausgedrückt.
Hab es so gemacht:
Beim Start-Button wird eine Variable auf "True" gesetzt. Bei der Überprüfung (if variable == True) wird der Ton gestartet.
Jetzt wird mit der after-Methode von Tkinter jede Sekunde überprüft, ob die Variable
noch auf "True" gestetzt ist (im Prinzip startet der Ton dann jedesmal von vorn).
Wenn ich den Stop-Button drücke, wird die Variable auf "False" gesetzt - wenn jetzt die
Überprüfung statt findet, dann wird der Ton nicht mehr gestartet.
Also bei mir funktionierts.
Aber ich geb schon zu, habe mich sehr unklar ausgedrückt.
Hab es so gemacht:
Beim Start-Button wird eine Variable auf "True" gesetzt. Bei der Überprüfung (if variable == True) wird der Ton gestartet.
Jetzt wird mit der after-Methode von Tkinter jede Sekunde überprüft, ob die Variable
noch auf "True" gestetzt ist (im Prinzip startet der Ton dann jedesmal von vorn).
Wenn ich den Stop-Button drücke, wird die Variable auf "False" gesetzt - wenn jetzt die
Überprüfung statt findet, dann wird der Ton nicht mehr gestartet.
Also bei mir funktionierts.
@pythonstarter: Die Frage war nicht wie man einen Ton gar nicht erst startet, sondern wie man einen bereits gestarteten wieder stoppt.
-
- User
- Beiträge: 53
- Registriert: Donnerstag 15. April 2010, 20:34
Ok, ok
Also ich hatte vor langer Zeit mal nen Wecker geschrieben, bei dem hat's funktioniert. In die Entrys kann man die gewünschte Uhrzeit eintragen - dann beginnt der BEEP.

Also ich hatte vor langer Zeit mal nen Wecker geschrieben, bei dem hat's funktioniert. In die Entrys kann man die gewünschte Uhrzeit eintragen - dann beginnt der BEEP.
Code: Alles auswählen
import tkinter as tk
import time
import winsound
def zeiten():
lt = time.localtime()
zeit = lt[3], ":" , lt[4] , ":" , lt[5]
label.config(text = zeit)
main.after(1000, zeiten)
if int(entry_std.get()) == int(lt [3]) and int(entry_min.get()) == int(lt[4]):
winsound.Beep(4000, 100)
def stop():
entry_std.delete(0,"end")
entry_std.insert("end", 0)
entry_min.delete(0,"end")
entry_min.insert("end", 0)
entry_sek.delete(0,"end")
entry_sek.insert("end", 0)
main = tk.Tk()
label_std = tk.Label(main, text = "Std")
label_std.grid(row = 0, column = 0)
entry_std = tk.Entry(main, width = 9, justify = "center")
entry_std.grid(row = 1, column = 0)
entry_std.insert("end", 0)
label_min = tk.Label(main, text = "Min")
label_min.grid(row = 0, column = 1)
entry_min = tk.Entry(main, width = 9,justify = "center")
entry_min.grid(row = 1, column = 1)
entry_min.insert("end", 0)
label_sek = tk.Label(main, text = "Sek")
label_sek.grid(row = 0, column = 2)
entry_sek = tk.Entry (main, width = 9, justify = "center")
entry_sek.grid(row = 1, column = 2)
entry_sek.insert("end", 0)
label = tk.Label(main, text = "Hier steht dann die Uhr")
label.grid(columnspan = 5)
start_button = tk.Button(main, text = "Start", command = zeiten)
start_button.grid()
stop_button = tk.Button(main, text = "Stop", command = stop)
stop_button.grid()
main.mainloop()