python - 我试图阻止列表循环,因为它是空的。我一直得到的只是索引错误无法从空列表中弹出

标签 python

我正在做一个学校项目,我正在制作一款游戏,让用户可以从多项选择选项中进行选择。我希望它显示在 GUI 中,但是我唯一知道如何让它正确显示是使用 .pop 方法,它在 GUI 中垂直 a-e 向下移动。

这是我收到错误的地方:

tile_frame = Label(frame, text=tiles_letter.pop())
IndexError: pop from empty list


import random
import time
from tkinter import *

root = Tk()

w = Label(root, text="GAME")
w.pack()

frame = Frame(root, width=300, height=300)
frame.pack()

L1 = Label(root, text="User Name")
L1.pack(side=LEFT)
E1 = Entry(root, bd =5)
E1.pack(side=LEFT)

tiles_letter = ['a', 'b', 'c', 'd', 'e']
tiles_letter.reverse()

def add_letter():
    tile_frame = Label(frame, text=tiles_letter.pop())
    tile_frame.pack()
    root.after(500, add_letter)

root.after(0, add_letter)  # add_letter will run as soon as the mainloop starts.
root.mainloop()

我不知道如何阻止它从空列表中弹出。我尝试使用 for..in..loop 但它不起作用。非常感谢一些帮助。

最佳答案

在add_letter中,只需使用len(tiles_letters) > 0检查是否有字母。 :

def add_letter():
    if len(tiles_letters) > 0:
        tile_frame = Label(frame, text=tiles_letter.pop())
        tile_frame.pack()
        root.after(500, add_letter)

关于python - 我试图阻止列表循环,因为它是空的。我一直得到的只是索引错误无法从空列表中弹出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53327896/

相关文章:

python - 使用 bool 掩码对 scipy 稀疏矩阵进行切片

python webbrowser.open 无法打开长网址

Python 配置解析器

python - Satchmo 克隆satchmo.py ImportError : cannot import name execute_manager

python - 从字符串中提取二维列表

python - 欧拉-马歇罗尼常数

python - 你如何过滤一个字符串只包含字母?

python - 使用 psutil.Process.memory_info 内存使用情况与 Pandas.memory_usage 不同

python - Matplotlib:鼠标悬停时标记点

python - 如何用 Python 制作漂亮的 OSD