在网格管理器 tkinter 中调整大小

Resizing in a grid manager tkinter

使用 tkinter,我想制作一个界面,在左侧包含几个按钮,这将是相当静态的,并且与右侧的小部件很好地对齐。 在右侧,我想要一个位于文本小部件上方的条目小部件,这两个小部件都会相应地调整大小(条目小部件仅在 X 轴上)。

这段代码完成了大部分工作,除了文本小部件不调整大小并且条目小部件仅调整大小以与文本小部件对齐。在尝试 column/rowconfigure 根目录时,顶部框架会笨拙地调整大小。

这是这段代码中的 tkinter 界面图片:

from tkinter import *

def main():
    root = Tk()
    root.geometry("300x400")

    framet = Frame(root)
    frameb = Frame(root)

    framet.grid(row=0, column=0, sticky='ew')
    frameb.grid(row=1, column=0, sticky='news')

    button1 = Button(framet, text='one', width=8)
    button1.grid(row=0, column=0)

    button2 = Button(frameb, text='two', width=8)
    button2.grid(row=1, column=0, sticky='n')

    entry1 = Entry(framet)
    entry1.grid(row=0, column=1, sticky='ew')

    text1 = Text(frameb, highlightbackground='black', highlightthickness=1)
    text1.grid(row=1, column=1, sticky='news')

    framet.columnconfigure(1, weight=1)

if __name__ == '__main__':
    main()

如您所见,条目和文本小部件没有调整大小。我怎样才能做到这一点,同时仍然让按钮保持静止,并且不移动任何东西(仅调整大小)?

这对你有用吗?我用 # 评论更改了行,我想,我真的不记得我做了什么我只是试图让它工作,但我不满意的一个问题是条目小部件不一样高度作为按钮,我想你可以手动设置它的高度但是..

from tkinter import *

def main():
    root = Tk()
    root.grid_columnconfigure(1,weight=1) # the text and entry frames column
    root.grid_rowconfigure(0,weight=1) # all frames row

    buttonframe = Frame(root)
    buttonframe.grid(row=0, column=0, sticky="nswe")
    entry_text_frame = Frame(root)
    entry_text_frame.grid(row=0, column=1, sticky="nswe")
    entry_text_frame.grid_columnconfigure(0,weight=1) # the entry and text widgets column
    entry_text_frame.grid_rowconfigure(1,weight=1) # the text widgets row

    button1 = Button(buttonframe, text='one', width=8)
    button1.grid(row=0, column=0, sticky='nswe')
    button2 = Button(buttonframe, text='two', width=8)
    button2.grid(row=1, column=0, sticky='nswe')

    entry1 = Entry(entry_text_frame)
    entry1.grid(row=0, column=0, sticky='nswe')

    text1 = Text(entry_text_frame, highlightbackground='black', highlightthickness=1)
    text1.grid(row=1, column=0, sticky='news')

    root.geometry("300x400")

if __name__ == '__main__':
    main()