如何在Tkinter中对齐PanedWindows?

0 投票
1 回答
927 浏览
提问于 2025-04-17 17:38

我刚开始学习Tkinter,感觉有点难上手。这段代码的目的是用公式(时间 = (速度 - 初始速度)/ 加速度)来计算时间。不过,我需要让用户输入这些变量。

这是我目前写的代码。它本来很好,但问题是标签和文本框对不齐。有没有简单的方法可以解决这个问题呢?

    def timF():
        timPanel = Toplevel()
        timPanel.wm_title("Time")

        timCont = PanedWindow(timPanel, orient=VERTICAL)
        timCont.pack(fill=BOTH, expand=1)

        # Top Paned Window and contents #
        timTopCont = PanedWindow(timCont, orient=HORIZONTAL)
        timCont.add(timTopCont)

        # Velocity label
        timFVelL = Label(timTopCont, text="Velocity")
        timTopCont.add(timFVelL)

        # Initial Velocity label
        timFiveL = Label(timTopCont, text="Initial Velocity")
        timTopCont.add(timFiveL)

        # Acceleration label
        timFaccL = Label(timTopCont, text="Acceleration")
        timTopCont.add(timFaccL)


        # Bottom Paned Window and contents #
        timBotCont = PanedWindow(timCont, orient=HORIZONTAL)
        timCont.add(timBotCont)

        # Velocity entry
        timFVelE = Entry(timBotCont)

        timBotCont.add(timFVelE)
        # Initial Velocity entry
        timFiveE = Entry(timBotCont)

        timBotCont.add(timFiveE)
        # Acceleration entry
        timFAccE = Entry(timBotCont)

        timBotCont.add(timFAccE)

1 个回答

3

只需使用 grid() 来放置小部件,而不是使用 pack()。如果你知道每个小部件要放在哪一行和哪一列,这种方法是最简单的:

timFVelL.grid(row=0, column=0)
timFVelE.grid(row=0, column=1)
timFiveL.grid(row=1, column=0)
timFiveE.grid(row=1, column=1)
# ...

撰写回答