如何在 tkinter 中使用 pack 时将对象放入特定的行或列中

Kha*_*eza 0 user-interface tkinter python-3.x

我一直在使用 python tkinter 制作一些 gui 应用程序。在 tkinter 中,pack 和 grid 不能一起使用。在编写代码时,我必须使用 pack,然后我需要使用 2 个名为“Cloumn”和“row”的网格功能,但是是不可能的。

from tkinter import *
root = Tk()
button = Button(root, text="Click Me")
button.pack(side="bottom") #But I want to put that button in row=3
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

我需要将该按钮放在第 3 行。但是我该怎么做呢?有什么办法可以做到吗?

Mik*_*SMT 6

为了在同一代码中使用 pack 和 grid,您需要确保在单独的容器上使用它们。每个容器(根窗口、顶层窗口、框架)只能有grid()pack()

例如,如果我需要在框架上使用包,然后在该框架内使用网格,那就可以了。但我不能在框架内使用包,也不能在框架内使用网格。

如果您展开由以下代码创建的窗口,您将看到如果使用得当,pack 和 grid 如何协同工作。

import tkinter as tk

root = tk.Tk()

top_frame = tk.Frame(root)
top_frame.pack(sid="top")
bot_frame = tk.Frame(root)
bot_frame.pack(sid="bottom")

tk.Label(top_frame, text="Row 0 of top_frame").grid(row=0, column=0)

tk.Label(bot_frame, text="Row 0 of bot_frame").grid(row=0, column=0)
tk.Label(bot_frame, text="Row 1 of bot_frame").grid(row=1, column=0)
tk.Label(bot_frame, text="Row 2 of bot_frame").grid(row=2, column=0)
tk.Button(bot_frame, text="Row 3 of bot_frame").grid(row=3, column=0)

root.mainloop()
Run Code Online (Sandbox Code Playgroud)