我试图在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])),
要删除第一个单词并在列表中显示新的第一个单词,但这显然只会在循环完成后才显示列表中剩下的最后一个单词。
我想知道最好的方法是完成这样的事情。
答案 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()