在Frame Tkinter中对齐标签

时间:2014-03-16 10:38:40

标签: python-2.7 tkinter

我是Python新手,甚至比Tkinter更新。

我目前正在练习如何使用框架和标签

我遇到的问题是,当我将标签放在每个标签旁边有一些按钮的框架上时,

对齐不好看。

以下是代码:

from Tkinter import *

class GUI():
    def __init__(self):
        self.namelist = ["Mark","Anna","Jason","Lenna","Leo","Zucharich","Robinson","AReallyLongNameThatMightExist"]
        self.canvas = Canvas(width=1200,height=700)
        self.canvas.pack(expand=YES,fill=BOTH)
    def Friends(self):        
        controlframe = Frame(self.canvas)
        controlframe.place(x=600,y=300)
        #Frame for showing names of friends
        for x in self.namelist:
            frame = Frame(controlframe)
            frame.pack()
            Name = Label(frame,text="%s "%x).pack(side=LEFT)
            chatButton = Button(frame,text="Chat").pack(side=LEFT)
            delButton = Button(frame,text="Delete").pack(side=LEFT)
            setcloseButton = Button(frame,text="Set Close").pack(side=LEFT)
            setgroupButton = Button(frame,text="Set Group").pack(side=LEFT)
        mainloop()

GUI = GUI()
GUI.Friends()

我该怎么做才能使Label(= name)和按钮的对齐方式与其他对齐方式一致,这样它们就会形成一个矩形形状,而不是一些之字形?

1 个答案:

答案 0 :(得分:1)

使用网格几何管理器在Tk中几乎总是更好。一旦你了解它是如何工作的,它就会更加灵活。将您的示例转换为使用网格可以解决您的问题,如下所示,但您应该尝试一下。例如,尝试从标签中删除'sticky =“W”',并查看可以控制行或列中小部件的居中。为了让您的框架响应合理调整大小,您还应该调查网格几何管理的columnconfigure和rowconfigure选项。

from Tkinter import *

class GUI():
    def __init__(self):
        self.namelist = ["Mark","Anna","Jason","Lenna",
                         "Leo","Zucharich","Robinson",
                         "AReallyLongNameThatMightExist"]
        self.canvas = Canvas(width=1200,height=700)
        self.canvas.pack(expand=YES,fill=BOTH)

    def Friends(self):
        frame = Frame(self.canvas)
        frame.place(x=600,y=300)
        #Frame for showing names of friends
        row = 0
        for x in self.namelist:
            label = Label(frame,text="%s "%x)
            chatButton = Button(frame,text="Chat")
            delButton = Button(frame,text="Delete")
            setcloseButton = Button(frame,text="Set Close")
            setgroupButton = Button(frame,text="Set Group")
            label.grid(row=row, column=0, sticky="W")
            chatButton.grid(row=row, column=1)
            delButton.grid(row=row, column=2)
            setcloseButton.grid(row=row, column=3)
            setgroupButton.grid(row=row, column=4)
            row = row + 1
        mainloop()

GUI = GUI()
GUI.Friends()