python - 使用 .grid() 定位时,如何将小部件放置在 tkinter 窗口的最底部?

标签 python tkinter

我知道您不能在同一个 Tkinter 窗口中使用不同类型的几何管理器,例如 .grid() 和 .pack()。我有一个使用 .grid() 布局的窗口,我现在正在尝试添加一个状态栏,该状态栏将捕捉到窗口的底部。我在网上找到的唯一方法是使用 .pack(side = BOTTOM),因为窗口的其余部分使用 .grid(),所以该方法不起作用。

有没有一种方法可以让我在使用 .grid() 时选择窗口底部来放置小部件?

最佳答案

from tkinter import *
from tkinter.ttk import *
import tkinter as tk

class sample(Frame):
    def __init__(self,master=None):
        Frame.__init__(self, master)
        self.status = StringVar()
        self.status.set("Initializing")
        statusbar = Label(root,textvariable = self.status,relief = SUNKEN, anchor = W)
        statusbar.pack(side = BOTTOM, fill = X)
        self.parent1 = Frame()
        self.parent1.pack(side = TOP) 
        self.createwidgets()
    def createwidgets(self):
        Label(self.parent1,text = "Grid 1,1").grid(row = 1, column = 1)
        Label(self.parent1,text = "Grid 1,2").grid(row = 1, column = 2)
        Label(self.parent1,text = "Grid 2,1").grid(row = 2, column = 1)
        Label(self.parent1,text = "Grid 2,2").grid(row = 2, column = 2)




if __name__ == '__main__':

    root = Tk()
    app = sample(master=root)
    app.mainloop()

所以使用标签因为我有点懒惰做其他事情,你可以做框架来确保你的窗口的每个部分都可以根据需要打包/网格。框架将是您在尝试排列小部件时使用的有用工具。请注意,在决定你的 parent 时,使用类可以让事情变得更容易一些。所以想象每一帧都是 parent ,他们的 child 可以根据需要打包。所以我建议画出你想要的 GUI,看看你将如何安排它们。此外,如果您想在一个框架内添加另一个框架,只需执行以下操作:

self.level2 = Frame(self.parent1)

您可以在文档中查看其他设置

http://effbot.org/tkinterbook/frame.htm

PS:我使用的是类,因此是 self,如果您不想使用类,那么可以将其更改为没有类。类(class)让阅读变得更好

关于python - 使用 .grid() 定位时,如何将小部件放置在 tkinter 窗口的最底部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58991973/

相关文章:

python - 通过 python 和 cmd 查找 ip 地址之间的区别

python - 节食 py2exe 和 matplotlib

python - 如何跟踪单击了哪个文本条目?

python - Tkinter Canvas 绘制 Windrose

Python pywin32 访问被拒绝

python - SQLAlchemy 的 UnicodeText 列在我的 MySQL 表上给了我一个 str ;不应该是unicode吗?

python - 如何根据列值从 DataFrame 中选择行?

python - python opencv cam = cv2.VideoCapture(cn)

python - 增加物体移动的速度(Tkinter)

python-3.x - 我可以获得第二次单击鼠标时的函数(不在当前窗口上)