Ich weiß nicht genau, ob das Problem mit tkinter zusammenhängt oder mit meinem falschen Umgang mit Klassen, daher poste ich mal hier...
Ich habe mich vor kurzem in Python eingearbeitet und jetzt mein erstes großes Projekt angefangen: ein Programm, das, nachdem ich Schlagworte eingegeben habe, eine interne "Datenbank" (Textdatei) nach dem passenden Titel durchsucht und diesen abspielt. Dabei ist wichtig, dass ich jederzeit die Möglichkeit habe, den Titel zu wechseln, indem ich andere Schlagworte eingebe oder das Programm sauber zu beenden. Das Programm funktioniert auch einwandfrei.
Dann habe ich einen tkinter-Button zugefügt und jetzt hängt das Programm, wenn ich "Anderer Titel" anklicke. Das heißt, das Fenster bleibt bestehen (es kommt sogar noch ein weiteres hinzu) und ich komme nicht wieder an den Punkt zurück, an dem ich neue Schlagworte für ein neu abzuspielendes Musikstück eingeben kann.
Es gibt ein Hauptprogramm, das die "Datenbank" erstellt und meine eingegebenen Schlagworte entgegennimmt und den Player startet:
Code: Alles auswählen
...
while True:
...
# Schlagworte werden eingegeben, ausgewertet und in "auswahl" gespeichert
...
if len(auswahl) == 1:
musicplayer(auswahl[0])
Code: Alles auswählen
import pygame
import sys
from tkinter import *
class MusicplayerButton(object):
def __init__(self, master):
frame = Frame(master)
frame.pack()
self.button = Button(frame,
text="Programm beenden", fg="red",
command=self.player_beenden)
self.button.pack(side=LEFT)
self.button2 = Button(frame,
text="Anderer Titel",
command=self.anderer_titel)
self.button2.pack(side=LEFT)
def player_beenden(self):
pygame.mixer.music.fadeout(3000)
sys.exit(0)
def anderer_titel(self):
pygame.mixer.music.fadeout(3000)
root = Tk()
button = MusicplayerButton(root)
root.mainloop()
button.frame.destroy()
pass
def musicplayer(titel):
pygame.mixer.init()
pygame.mixer.music.load(titel)
pygame.mixer.music.play(-1)
print("Im Moment läuft:", titel)
root = Tk()
musicplayer_button = MusicplayerButton(root)
root.mainloop()
Danke im Voraus
Killerkaninchen