如何在tkinter python中对齐帧?

时间:2017-04-25 09:15:45

标签: python python-3.x tkinter

我尝试对齐以下条目小部件,但它不起作用。当我没有将它放入一个框架但是现在它没有正确对齐时,我能够正确地对齐它。在它出现在左侧之前,标签位于输入框的旁边,但现在它位于顶部中心。我试图改变坐标,但它不起作用。我希望能够像以前一样在左侧对齐它,因为我会在右侧放置其他东西。

def userinput():

        #first
        frame=Frame(root)
        frame.place(x=55,y=50)
        frame.pack()
        L1=Label(frame,text="1",font=("calibri"))
        L1.place(x=55,y=50)
        L1.pack()

        frame1=Frame(root)
        frame1.place(x=70,y=50)
        frame1.pack()
        E1 = tk.Entry(frame1, width=30, bd=4)
        E1.pack()
        E1.bind('<Return>', lambda event, arg=(0): answer(event, arg))

        #second
        frame2=Frame(root)
        frame2.place(x=55,y=80)
        frame2.pack()
        L2 = Label(frame2,text="2",font=("calibri"))
        L2.pack()

        frame3=Frame(root)
        frame3.place(x=70,y=80)
        frame3.pack()
        E2 = tk.Entry(frame3,width=30, bd=4)
        E2.pack()
        E2.bind('<Return>', lambda event, arg=(1): answer(event, arg))

        #third
        frame4=Frame(root)
        frame4.place(x=55,y=110)
        frame4.pack()
        L3 = Label(frame4,text="3",font=("calibri"))
        L3.pack()

        frame5=Frame(root)
        frame5.place(x=70,y=110)
        frame5.pack()
        E3 = tk.Entry(frame5, width=30,bd=4)
        E3.pack()
        E3.bind('<Return>', lambda event, arg=(2): answer(event, arg))

1 个答案:

答案 0 :(得分:0)

这是你正在寻找的吗?

class UI(Frame):
    def __init__(self, parent):
        self.parent = parent
        Frame.__init__(self, parent)
        self.create_widgets(parent)

    def create_widgets(self, root):
        #first
        f1 = Frame(root)
        e1 = Entry(f1, width=30, bd=4)
        l1 = Label(f1, text="1")
        e1.grid(row=0, column=0)
        l1.grid(row=0, column=1)
        f1.grid()
        #second
        f2 = Frame(root)
        e2 = Entry(f2, width=30, bd=4)
        l2 = Label(f2, text="2")
        e2.grid(row=0, column=0)
        l2.grid(row=0, column=1)
        f2.grid()
        #third
        self.s1 = IntVar()
        self.s1.set(3)
        f3 = Frame(root)
        e3 = Entry(f3, width=30, bd=4)
        l3 = Label(f3, textvariable=s1)
        e3.grid(row=0, column=0)
        l3.grid(row=0, column=1)
        f3.grid()

   def set_score(self, score):
       self.s1.set(score)

def test_ui():
    root = Tk()
    app = UI(root)
    app.set_score(4)
    app.mainloop()

test_ui()

我发现将小部件网格化比打包它们简单得多。