Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Tkinter中进行持续验证测试?_Python_Class_Validation_Tkinter - Fatal编程技术网

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)上出现了错误。