gpt4 book ai didi

python - tkinter 使用主窗口调整框架和内容的大小

转载 作者:太空宇宙 更新时间:2023-11-03 14:44:49 26 4
gpt4 key购买 nike

我正在尝试找出如何控制包含框架的窗口的大小调整。在代码中,我在顶部有三个按钮,它们应该保持在原位。

当我拖动窗口将其展开时,我希望框架及其包含的文本框随主窗口一起展开。我读过可以使用 columnconfigurerowconfigure 但不确定如何实现它。

from tkinter import *
from tkinter import scrolledtext

master_window = Tk()

# Create the buttons
btn_Image = Button(master_window, text='Image')
btn_Image.grid(row=1, column=1, padx=(10), pady=10, sticky=E + W)

btn_File = Button(master_window, text='File')
btn_File.grid(row=1, column=2, padx=(10), pady=10, sticky=E + W)

btn_Folder = Button(master_window, text='Folder')
btn_Folder.grid(row=1, column=3, padx=(10), pady=10, sticky=E + W)

# Group1 Frame ----------------------------------------------------
group1 = LabelFrame(master_window, text="Text Box", padx=5, pady=5)
group1.grid(row=2, column=1, columnspan=3, padx=10, pady=10, sticky=E+W+N+S)

# Create the textbox
txtbox = scrolledtext.ScrolledText(group1, width=40, height=10)
txtbox.grid(row=1, column=1, columnspan=3, sticky=E+W+N+S)

mainloop()

最佳答案

grid() 布局管理器的行号和列号是从 0 开始的,而不是从 1 开始的(尽管将元素放在任何你想要的地方都没有错,我只是提到这个因为你的代码给我的印象是你认为单元格从 1 开始,而不是 0)。因为我看不出为什么要开始将小部件放置在 row=1column=1 的原因,所以在下面的解决方案中,我开始放置在 0 索引处。

我建议您为问题中的 3 个按钮创建一个不同的容器 - 父小部件(让我们说一个 tkinter.Frame())。

代码如下:

from tkinter import *
from tkinter import scrolledtext

master_window = Tk()

# Parent widget for the buttons
buttons_frame = Frame(master_window)
buttons_frame.grid(row=0, column=0, sticky=W+E)

btn_Image = Button(buttons_frame, text='Image')
btn_Image.grid(row=0, column=0, padx=(10), pady=10)

btn_File = Button(buttons_frame, text='File')
btn_File.grid(row=0, column=1, padx=(10), pady=10)

btn_Folder = Button(buttons_frame, text='Folder')
btn_Folder.grid(row=0, column=2, padx=(10), pady=10)

# Group1 Frame ----------------------------------------------------
group1 = LabelFrame(master_window, text="Text Box", padx=5, pady=5)
group1.grid(row=1, column=0, columnspan=3, padx=10, pady=10, sticky=E+W+N+S)

master_window.columnconfigure(0, weight=1)
master_window.rowconfigure(1, weight=1)

group1.rowconfigure(0, weight=1)
group1.columnconfigure(0, weight=1)

# Create the textbox
txtbox = scrolledtext.ScrolledText(group1, width=40, height=10)
txtbox.grid(row=0, column=0, sticky=E+W+N+S)

mainloop()

演示:

未拉伸(stretch)时:

enter image description here

平均拉伸(stretch):

enter image description here

最大拉伸(stretch)后:

enter image description here

关于python - tkinter 使用主窗口调整框架和内容的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50422735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com