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

标签 python python-3.x tkinter

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/

相关文章:

python - 关于python中numpy矩阵的问题

python - 在 Ubuntu 上编译 cx_Freeze 时出错

python - 无法访问更新后的全局变量的值

python - Tkinter 标签不显示图像

python - Django OAuth 工具包 invalid_grant 错误

python - 使用 matplotlib 并排绘制图像

python - Bottle.py服务器部署

python - 在 openpyxl 条件格式公式中使用多个单元格

python - turtle 手绘图

python - Tkinter 按钮只允许单击一次