首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带Tkinter的音频测试

带Tkinter的音频测试
EN

Stack Overflow用户
提问于 2018-01-01 19:40:55
回答 1查看 158关注 0票数 1

我想用Tkinter (Python2.7)创建一个简单的测试。我有一份音频列表,其中每一个我都希望有以下内容:

  1. 复制音频的按钮。
  2. 用户可以引入任何文本的条目。
  3. 默认情况下显示“不正确”和“正确”的标签!无论何时,条目中的文本都是音频中歌曲的标题。

我成功地创建了这三个对象,但是我很难根据条目文本更新标签:周围有很多引用,但我无法让它正常工作。我想我不太明白循环是如何工作的,以及事件是何时触发的。

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

代码语言:javascript
运行
复制
#!/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开头的行放错了位置,但我不知道该写在哪里,也不知道如何对标签进行更新。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-01-01 21:12:07

您可以使用trace来实现:

默认情况下显示“不正确”和“正确”的标签!无论何时,条目中的文本都是音频中歌曲的标题。

trace'w'选项一起使用时,每当重写附加到的变量类(BooleanVarDoubleVarIntVarStringVar)时,它都会调用一个方法。下面是一个示例,检查条目中的文本是否为"Valid String"

代码语言:javascript
运行
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48052688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档