请帮助修复代码:
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
有两件事对你不利。首先,当指定按钮的高度时,如果该按钮有文本,那么height属性将引用文本行。因此,如果按钮的高度为20,则要求按钮的高度为20行。在
第二,容器小部件(通常是框架,但实际上是任何小部件)的默认行为是“收缩以适应”或“扩展以适应”它包含的所有内容。所以,即使你把一帧的高度设置为20像素,它实际上也足够大,足以容纳它的所有子帧。这是件好事,99.9%的时间你都想要。您应该避免尝试制作固定大小的窗口,而是让tkinter为您决定合适的尺寸。在
这种扩展或收缩的特性称为“几何传播”。当您确实需要精确控制容器小部件的大小时,可以关闭此行为。这个网站上有几个例子来说明如何做到这一点。但同样,很少有人需要它。在
按钮中的“height”值测量的是文本行,而不是像素。所以你要求一个足够高的盒子来画20行文字。尝试将其减少到1或2:
相关问题 更多 >
编程相关推荐