如何在Tkinter中设置元素的精确高度?

2024-03-28 16:05:07 发布

您现在位置:Python中文网/ 问答频道 /正文

请帮助修复代码:

import Tkinter as tkinter

root = tkinter.Tk()
root.geometry("340x470") 

row5 = tkinter.Frame(root)
row5.pack(side = 'top', fill = 'x')
label5 = tkinter.Label(row5, text = 'Audio', width = 10, anchor='e')
label5.pack(side = 'left')
entry5 = tkinter.Text(row5, height = '4')
entry5.pack(side = 'right', fill = 'x', expand = 'yes')       

row6 = tkinter.Frame(root, borderwidth = 10, height = 20, bg = 'red')
row6.pack(side = 'top', fill = 'x')
button = tkinter.Button(row6, text = 'Send', height = 20, width = 20, relief = 'raised', cursor = 'hand1', font = ('times', 14, 'bold'))

button.pack()

root.mainloop()

问题是我要求“row6”高度为20,而屏幕高度远远大于20


Tags: texttkintertopbuttonrootwidthfillframe
2条回答

有两件事对你不利。首先,当指定按钮的高度时,如果该按钮有文本,那么height属性将引用文本行。因此,如果按钮的高度为20,则要求按钮的高度为20行。在

第二,容器小部件(通常是框架,但实际上是任何小部件)的默认行为是“收缩以适应”或“扩展以适应”它包含的所有内容。所以,即使你把一帧的高度设置为20像素,它实际上也足够大,足以容纳它的所有子帧。这是件好事,99.9%的时间你都想要。您应该避免尝试制作固定大小的窗口,而是让tkinter为您决定合适的尺寸。在

这种扩展或收缩的特性称为“几何传播”。当您确实需要精确控制容器小部件的大小时,可以关闭此行为。这个网站上有几个例子来说明如何做到这一点。但同样,很少有人需要它。在

按钮中的“height”值测量的是文本行,而不是像素。所以你要求一个足够高的盒子来画20行文字。尝试将其减少到1或2:

button = tkinter.Button(row6, text = 'Send', height = 2, width = 20, relief = 'raised', cursor = 'hand1', font = ('times', 14, 'bold'))

相关问题 更多 >