使用Tkinter进行音频测验

时间:2018-01-01 19:40:55

标签: python tkinter

我想用Tkinter(Python 2.7)创建一个简单的测验。我有一个音频列表,对于每个音频我想要有以下内容:

  1. 重现音频的按钮
  2. 条目,用户可以在其中引入任何文字。
  3. 标签显示"不正确"默认情况下"正确!"只要条目中的文字是音频中歌曲的标题。
  4. 我设法创建了三个对象,但是我很难根据条目文本更新标签:周围有许多参考文献,但我无法使其正常工作。我想我不太了解循环如何工作以及何时触发事件。

    请你提供一个最符合我想要的例子吗?我在下面提供了我的代码,但它很可能会膨胀(我对Tkinter和面向对象编程完全是新手),因为我基本上是从Internet上的现有示例构建的:

    #!/usr/bin/env python
    #encoding=utf-8
    
    import Tkinter as tk
    import vlc
    
    tk.Tk()
    var_entry= tk.StringVar()
    var_label= tk.StringVar()
    
    class Application(tk.Frame):
        def __init__(self, master=None):
            tk.Frame.__init__(self, master)
            self.grid()
            self.createWidgets()
    
        def createWidgets(self):
    
            self.audio= tk.Button(self,text='Play Audio',command=lambda:vlc.MediaPlayer('./audios/my_audio.mp3').play())
            self.audio.grid()
    
            self.entry = tk.Entry(self,width=50,textvariable=var_entry)
            self.entry.grid()
    
            var_label.set('Correct!\n' if var_entry.get()=='my_audio_title' else 'Incorrect\n')
            self.label = tk.Label(self,textvariable=var_label)
            self.label.grid()
    
            self.quitButton = tk.Button(self, text='Quit',command=self.quit)
            self.quitButton.grid()
    
    app = Application()
    app.master.title('Audio Quiz')
    app.mainloop()
    

    我确定以var_label.set开头的行是错过的,但我不知道应该在哪里写它以及如何更新标签。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以使用trace来实现:

  

标签显示"不正确"默认情况下"正确!"只要条目中的文字是音频中歌曲的标题。

trace'w'选项一起使用时,只要变量类BooleanVarDoubleVarIntVar,{{1},它就会调用方法它被附加到重写。下面是检查条目中的文本是否为StringVar的示例:

"Valid String"