使用按钮和标签显示列表值

时间:2018-09-12 01:25:00

标签: python-3.x tkinter

我试图在tkinter中使用按钮和标签来显示以下列表中的值:

words = ["Australians", "all", "let", "us", "rejoice", "for", "we", "are",
         "young", "and", "free"]

这个想法是,每次按下按钮,标签都会在列表中显示下一个单词。

我最初的想法是使用这样的循环:

def word_displayer():
    global words
    for word in words:
        if words[0] == "Australians":
            display.config(text=(words[0])),
            words.remove("Australians")
        elif words[0] == "all":
            display.config(text=(words[0])),

要删除第一个单词并在列表中显示新的第一个单词,但这显然只会在循环完成后才显示列表中剩下的最后一个单词。

我想知道最好的方法是完成这样的事情。

2 个答案:

答案 0 :(得分:1)

列表中的元素可通过其索引访问。您可以简单地存储按钮所指向的当前索引。每次单击按钮时,更新索引并显示新单词:

def word_displayer():
  words = ["Australians", "all", "let", "us", "rejoice", "for", "we", "are",
     "young", "and", "free"]
  index = 0;
  display.config(text=(words[index]))

  def on_click():
    index = index + 1

    # Check if the index is pointing past the end of the list
    if (index >= len(words)):
      # If it is, point back at the beginning of the list
      index = 0
    display.config(text=(words[index]))

  display.bind('<Button-1>', on_click)

无论列表中有哪些单词或列表有多长,此方法都可以使您的按钮旋转单词。

答案 1 :(得分:0)

按钮小部件具有一个命令选项,可用于实现在小部件中旋转文本(直接在按钮上还是在单独的标签小部件上)的想法。

import tkinter as tk
anthem = ['with', 'golden', 'soil', 'and', 'wealth', 'for', 'toil']
length_of_song = 7
position = 0
ROOT = tk.Tk()
def sing_loop():
    global position, length_of_song
    sing['text'] = anthem[position]
    position = (position + 1) % length_of_song

sing = tk.Button(text='Press to sing',
                 command=sing_loop)
sing.pack(fill='both')
ROOT.mainloop()