Tkinter 小部件未按预期调整大小

Tkinter widgets not resizing as expected

抱歉,如果这是一个简单的修复 - 我是 tkinter(和一般的图形应用程序)的新手,并且正在学习曲线上。

我有一个简单的 window 网格布局,在它的右边有一个 canvas 和一些标签。它们的位置和大小正确 - 但是当我向右调整 window 的大小时,它们确实会扩展,但只有大约一半(即,我向右每 2 个像素扩展 window ,它们的小部件仅扩展 1)。我有各自的列加权,以及父框架的列加权。我不确定如何解决这个问题,也没有通过谷歌搜索找到任何类似的东西。下面我发布了我的代码,以及应用程序启动时和调整大小时小部件的屏幕截图。

代码

from tkinter import *

root = Tk()
root.title("title")

mainframe = Frame(root)
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)


canvas = Canvas(mainframe, width=800, height=800)
canvas.grid(row=1, column=1, rowspan=3)

info_label = Label(mainframe, text='Info Label', bg='white', relief='solid', borderwidth=1)
info_label.grid(row=1, column=2, columnspan=2)

chatbox = Label(mainframe, text='Welcome to the application.', bg='white', relief='solid', borderwidth=1)
chatbox.grid(row=2, column=2, columnspan=2, sticky=(N,S,E,W))

chat_entry = Entry(mainframe)
chat_entry.grid(row=3, column=2)

chat_send = Button(mainframe, text='Send')
chat_send.grid(row=3, column=3)

mainframe.rowconfigure(1, weight=1)
mainframe.rowconfigure(2, weight=1)
mainframe.columnconfigure(2, weight=1)

root.columnconfigure(1, weight=1)

root.mainloop()

屏幕截图

根据window大小调整大小的唯一定位命令是pack()。 众所周知,您具有以下功能:

pack()
grid()
place()

顺便说一句,我推荐使用place函数并使用这个:

    window.resizable(width=False, height=False)

此函数阻止客户端调整 tkinter 大小的能力 window。