python - 使用 Tkinter 进行音频测验

标签 python tkinter

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

  1. 再现音频的按钮
  2. 用户可以在其中引入任何文本的条目
  3. 标签默认显示“不正确”和“正确!”每当条目中的文本是音频中歌曲的标题时。

我设法创建了三个对象,但我很难根据输入文本更新标签:周围有很多引用资料,但我无法让它工作。我想我不太明白循环是如何工作的以及事件何时被触发。

您能否提供一个能够实现我的目的的最小示例?我在下面提供了我的代码,但它很可能会变得臃肿(我对 Tkinter 和面向对象编程完全是新手),因为我基本上是根据互联网上的现有示例构建的:

#!/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 开头的行放错了位置,但我真的不知道应该在哪里编写它以及如何更新标签。

提前致谢。

最佳答案

您可以使用trace实现:

A label displaying "Incorrect" by default and "Correct!" whenever the text in the entry is the title of the song in the audio.

trace'w' 选项一起使用时,每当变量 class(BooleanVar, DoubleVar, IntVar, StringVar) 所附加的内容被重写。下面是一个检查条目中的文本是否为“Valid String”的示例:

import tkinter as tk

def check_entry(*args):
    global entry, entry_var, label
    if entry_var.get() == "Valid String":
        label['text'] = "Correct"
    else:
        label['text'] = "Incorrect"

root = tk.Tk()

entry_var = tk.StringVar()

label = tk.Label(root)
entry = tk.Entry(root, textvariable=entry_var)

label.pack()
entry.pack()

entry_var.trace('w', check_entry)

root.mainloop()

关于python - 使用 Tkinter 进行音频测验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48052688/

相关文章:

python - Tkinter Canvas 存储的项目被清除和召回

python - sklearn PLSRegression - X 的方差由潜在向量解释

python - 在 Django 中过滤外键

python - 在 Django 的模板系统中,如何让它有时做不同的事情?

python - 使用 Tkinter 等待一定时间

python - 在 Python 中为 Tkinter 标签创建类

python - 在 Visual Studio Code 中运行 python 脚本;如何让 `input ()` 工作?

python - 在 Windows python 中安装 Openalpr

python - 使用 tkinter 编辑文本时显示下拉组合框

python - 将小部件的引用传递给函数