簡體   English   中英

使用.grid() 定位時,如何將小部件放置在 tkinter window 的最底部?

[英]How can I place a widget at the very bottom of a tkinter window when positioning with .grid()?

我知道您不能在同一個 Tkinter window 中使用不同類型的幾何管理器,例如 .grid() 和 .pack()。 我有一個 window 已經使用.grid() 布局,我現在正在嘗試添加一個狀態欄,該狀態欄將被捕捉到 window 的底部。 我在網上找到的唯一方法是 use.pack(side = BOTTOM),因為 window 的 rest 使用.grid(),這將不起作用。

有沒有一種方法可以讓我在 window 的底部 select 在 using.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()

所以使用標簽,因為我有點懶得做其他事情,你可以做框架來確保你的 window 的每個部分都可以根據需要打包/網格。 框架將是您嘗試排列小部件時使用的有用工具。 請注意,在決定您的父母時,使用 class 可以使事情變得更容易一些。 所以想象每個框架都是父母,他們的孩子可以根據需要打包。 所以我建議你畫出你想要的 GUI,看看你將如何安排它們。 此外,如果您想在一個框架內添加另一個框架,只需執行以下操作:

self.level2 = Frame(self.parent1)

您可以查看文檔中的其他設置

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

PS:我使用的是 class 因此自我,如果您不想使用類,那么只需將其更改為沒有 class 即可。 課程讓閱讀變得更好

只需給它一個比任何其他行都大的row參數。 然后,給它之前的至少一行賦予權重。

更好的是使用框架來組織你的代碼。 將滾動條放在底部並在其上方放置一個框架。 然后,對框架內的所有內容使用網格。

例子:

# layout of the root window
main = tk.Frame(root)
statusbar = tk.Label(root, text="this is the statusbar", anchor="w")

statusbar.pack(side="bottom", fill="x")
main.pack(side="top", fill="both", expand=True)

# layout of the main window
for row in range(1, 10):
    label = tk.Label(main, text=f"R{row}")
    label.grid(row=row, sticky="nsew")
    main.grid_rowconfigure(row, weight=1)
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM