gpt4 book ai didi

python - tkinter.Text 小部件超出网格管理器限制

转载 作者:行者123 更新时间:2023-12-01 09:24:38 27 4
gpt4 key购买 nike

TL;博士:

文本小部件扩展得比 grid() 的指定列、行组合更远。称呼。唯一的解决方案来自更改 .width.height属性为小东西并强制调用的粘性标志使用 'nsew' 扩展和填充.

背景:

文本小部件给我带来了一些困惑,例如以下内容:

root = Tk()
root.geometry('400x400')
root.grid_columnconfigure(0, weight = 1)
root.grid_columnconfigure(1, weight = 1)
root.grid_rowconfigure(0, weight = 1)
root.grid_rowconfigure(1, weight = 1)
b = Button(root)
b.grid(column = 0, row = 0, sticky = 'nsew')
t = Text(root)
t.grid(column = 1, row = 1, sticky = 'nsew')

鉴于此,我应该有一个 400x400 的窗口,例如:

+-------+-------+
| | |
| b | |
| | |
+-------+-------+
| | |
| | t |
| | |
+-------+-------+

但最终发生的情况是,文本小部件远远超出了右下列行:

+---+-----------+
| b | |
+---+ |
| | t |
| | |
| | |
| | |
+---+-----------+

解决此问题的唯一方法是更改​​文本小部件,如下所示:

t = Text(root, height = 1, width = 1)

然后粘性调用将小部件扩展为仅适合网格的列、行。然而,这似乎是我不必采取的额外步骤,即使文本小部件默认为 .width.height像所有其他小部件一样。

问题:为什么文本小部件会扩展到网格的指定列、行之外?

最佳答案

Question: Why does the Text widget expand beyond the specified column, row of a grid?

事实并非如此;相反,行和列会扩展以适合文本小部件。这并不是文本小部件所独有的。如果可能的话,Tkinter 将尝试进行安排,以便任何小部件都以其请求的大小显示。对于文本小部件,默认大小为 80 个字符 x 24 个字符,因此您的行和列会扩展以尝试适合该小部件。

如果您在第三列和第三行添加一些内容,就可以很容易地看出这一点。您会看到第二行非常高,第二列非常宽。即:行和列扩展以适合文本小部件,而不是文本小部件超出行和列的边缘。

将以下内容添加到示例代码中:

bottom_edge = Frame(root, background="red", height=4)
right_edge = Frame(root, background="red", width=4)
bottom_edge.grid(row=2, column=0, columnspan=3, sticky="ew")
right_edge.grid(row=0, column=2, rowspan=3, sticky="ns")

您必须调整窗口大小,因为您将窗口设置得太小而无法容纳所有内容。完成后,您将在右侧和下方看到红色边框,表明正在扩展的是行和列,而不是扩展到行和列之外的文本小部件。文本小部件位于第二行第二列的范围内。

enter image description here

关于python - tkinter.Text 小部件超出网格管理器限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50535182/

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