1

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

这段代码完成了大部分工作,除了 Text 小部件不调整大小并且 Entry 小部件只调整大小以与 Text 小部件对齐。在尝试对根进行列/行配置时,顶部框架会笨拙地调整大小。

这是此代码中 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()

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

4

1 回答 1

0

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

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()
于 2017-10-24T19:05:30.707 回答