2017-12-29 12 views
1

Ich möchte sozusagen eine "Music Hub" machen, wo ich meine ganze Musik an einem Ort haben könnte alles was ich tun müsste, tippe den Songnamen ein und drücke dann Play. Ich habe es fast erreicht, aber ich bekomme einen Fehler für meinen Eintrag in tkinter. Hier ist mein Code:tkinter und pygame Probleme mit Eintrag

from tkinter import * 
import time 
import pygame 
import tkinter 

root = Tk() 
f1 = tkinter.Frame(root, height=100, width=100) 
f1.pack() 
root.title("Test") 

e = Entry(f1) 
e.pack() 
e.focus_set() 

s = e.get() 

def song(): 
    pygame.init() 
    pygame.mixer.init() 
    pygame.mixer.music.load(s+".mp3") 
    pygame.mixer.music.play() 
def pause(): 
    pygame.mixer.music.pause() 
def resume(): 
    pygame.mixer.music.unpause() 



b = Button(f1, text="Play Song", command=song) 
b.pack(fill=tkinter.BOTH, expand=1) 

b2 = Button(f1, text="Pause", command=pause) 
b2.pack() 

b3 = Button(f1, text="Resume", command=resume) 
b3.pack() 

root.mainloop() 

Ich erhalte die Fehlermeldung „pygame.error: Kann nicht‚.mp3' öffnen“, so das bedeuten muss, dass die Eingabe von dem Eintrag nicht durchmacht. Alle Hilfe, danke!

+0

's = e.get()' die Einträge zu 's' aktuellen Wert zuweist. Was ist zunächst nichts. – Nae

Antwort

3

Ich habe eine Lösung gefunden. Anstatt die Variable e.get() zu schreiben, lege ich sie einfach in die pygame-Anweisung.

pygame.mixer.music.load(s+".mp3") 

geändert

pygame.mixer.music.load((e.get())+".mp3") 

und es funktioniert

+0

Dies ist die Lösung, weil es die 'song' Methode macht, den Eingangswert zu erhalten, wann immer es aufgerufen wird, ergo wenn die Taste gedrückt wird. Im Gegensatz zum Einstiegswert. – Nae

+0

können Sie es als akzeptierte Antwort markieren :) – furas