【发布时间】:2014-09-10 09:27:43
【问题描述】:
我是 Python 新手,在使用包布局时遇到问题。我有 40 个字母,我想制作 4 行,每行包含 10 个字母。
这是我的代码:
import random
from tkinter import *
root = Tk()
w = Label(root, text="GAME")
w.pack(side=TOP)
# there are 40 tiles
tiles_letter = ['a', 'b', 'c', 'c', 'c', 'd', 'd', 'e', 'e', 'e', 'e', 'f', 'f', 'g', 'g', 'h', 'i', 'j', 'k', 'k', 'a', 'b', 'c', 'c', 'c', 'd', 'd', 'e', 'e', 'e', 'e', 'f', 'f', 'g', 'g', 'h', 'i', 'j', 'k', 'k']
tiles_make_word = []
def add_letter():
if not tiles_letter:
return
rand = random.choice(tiles_letter)
tiles_make_word.append(rand)
print(len(tiles_make_word))
tile_frame_column = Label(root, text=rand, bg="red", fg="white")
tile_frame_column.pack(side=LEFT, padx=5, pady=10)
tiles_letter.remove(rand) # remove that tile from list of tiles
if len(tiles_make_word) % 10 == 0:
separator = Frame(height=100)
separator.pack(fill=X, padx=5, pady=5)
root.after(500, add_letter)
root.after(500, add_letter)
root.mainloop()
问题是每 10 个字母后它会创建一个新行,但布局不正确。它看起来更像是锯齿形或对角线,而不是直接位于上一行的下方。有人可以告诉我代码有什么问题以及如何解决吗?我很困惑尝试使用“after”方法创建新行。也许错误与此有关。希望这很简单。我已经坚持了好几个小时了。
谢谢
【问题讨论】: