首页 > 解决方案 > 格式化标签TKinter python 2.7

问题描述

from Tkinter import *
import sys
sys.path.append("/Users/bry/Documents/Python/proj")
import stack

window = Tk()
colors=["gold","pink","blue","red","orange","purple","teal","green","yellow","violet","black","silver","white"]
firstGame = stack.blockWorldGame()

window.title("World Block Problem Simulator")
width_value = window.winfo_screenwidth()
height_value = window.winfo_screenheight()
window.geometry("%dx%d+0+0"%(width_value,height_value))

headerFrame = Frame(window)
headerFrame.pack()
headerLabel = Label(headerFrame , text="World Block Simulator!",fg="red",font="times 50 bold italic underline")
headerLabel.pack()
startingFrame = Frame(window)
startingFrame.pack()
startingProgramLabel = Label(startingFrame, text="Starting World Block State" , font="times 20 ")
startingProgramLabel.pack()
FrameContent = Frame(window)
FrameContent.pack()
for array in range([[A],[B,C],[D,E]]):
    frame = Frame(FrameContent)
    frame.pack(side=LEFT,expand=False)
    for block in range(len(firstGame.board[array])):#putting blocks in the same stack to the same frame
        blockLabel = Label(frame,text=firstGame.board[array][block],bg=colors[array],width=30,height=3)
        blockLabel.pack()

window.mainloop()

基本上通过这段代码,我试图在解决世界块问题时反映棋盘状态,但是我在 GUI 上以正确格式表示块时遇到了一些问题

运行这组代码后,我将得到 A、BC、DE 的结果。但是 A 块不会在 B 应该在的相同位置反射,它将浮动在 B 和 C 中间的高度。

有人能告诉我如何使 A 与 B 和 D 内联吗 在此处输入图像描述

标签: pythonuser-interfacetkinter

解决方案


您需要blockLabel从下到上包装frame如下:

for array in range([[A],[B,C],[D,E]]):
    frame = Frame(FrameContent)
    frame.pack(side=LEFT,fill=Y) # added fill=Y
    for block in range(len(firstGame.board[array])):
        blockLabel = Label(frame,text=firstGame.board[array][block],bg=colors[array],width=30,height=3)
        blockLabel.pack(side=BOTTOM) # added side=BOTTOM

推荐阅读