Python 在Tkinter中进行持续验证测试?
我试图使它,以便当一个文件路径名是有效的,它将切换到下一个菜单帧。问题是验证只在类初始化时运行。帮忙Python 在Tkinter中进行持续验证测试?,python,class,validation,tkinter,Python,Class,Validation,Tkinter,我试图使它,以便当一个文件路径名是有效的,它将切换到下一个菜单帧。问题是验证只在类初始化时运行。帮忙 class PlaySong(tk.Frame): def __init__(self, master): tk.Frame.__init__(self, master) tk.Label(self, text="Play Song").pack(side="top", fill="x", pady=10) tk.Label (self,t
class PlaySong(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
tk.Label(self, text="Play Song").pack(side="top", fill="x", pady=10)
tk.Label (self,text= r"Enter in path of MIDI file (e.g C:\Users\etc.)").pack(side="top", fill="x", pady=10)
self.SongPath = tk.Entry(self)
self.SongPath.pack()
valid = False
self.enter = tk.Button(self, text="Enter path", command = lambda: valid == self.SongCheck)
self.enter.pack(pady=10)
tk.Button(self, text="Return to main menu",fg="red2", command=lambda: master.switch_frame(MainMenu)).pack(fill="x")
if valid == True:
master.switch_frame(PlaySongMixer)
def SongCheck(self):
path = self.SongPath.get()
try:
pygame.mixer.music.load(path)
except:
self.enter.config(text="Invalid path. Try again.")
else:
return True
您应该调用
switch\u frame()
内部SongCheck()
函数:
class PlaySong(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
tk.Label(self, text="Play Song").pack(side="top", fill="x", pady=10)
tk.Label(self, text=r"Enter in path of MIDI file (e.g C:\Users\etc.)").pack(side="top", fill="x", pady=10)
self.SongPath = tk.Entry(self)
self.SongPath.pack()
self.enter = tk.Button(self, text="Enter path", command=self.SongCheck)
self.enter.pack(pady=10)
tk.Button(self, text="Return to main menu", fg="red2", command=lambda: master.switch_frame(MainMenu)).pack(fill="x")
def SongCheck(self):
path = self.SongPath.get()
try:
pygame.mixer.music.load(path)
self.master.switch_frame(PlaySongMixer)
except Exception as e:
self.enter.config(text="Invalid path. Try again.")
变量
valid
在lambda
语句中,command=lambda:valid==self.SongCheck)
。是本地的,不会更改allready销毁的本地\uuuu init\uuuu.valid=False
。仔细阅读,首先你必须理解,谢谢!不幸的是,它仍然没有切换到下一帧,即使使用valid as全局变量,关于如何解决此问题的任何建议?“即使使用valid as全局变量,”:现在,在单击[“输入路径”]
后,您有一个全局值==True
。但是你希望如何从中受益呢?为什么不使用与[“返回主菜单”]
相同的语法?谢谢!出于某种原因,即使它没有显示错误,也不会切换帧。为了澄清,这是一个用于形成窗口的初始类,然后使用switch_frame切换到不同的菜单。没关系,这是模块的问题!非常感谢你!这意味着pygame.mixer.music.load(path)上出现了错误。