请帮助修复代码:
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
答案 0 :(得分:0)
按钮中的“高度”值测量文本行,而不是像素。所以你要求一个足够高的盒子来画20行文字。尝试将其减少到1或2:
button = tkinter.Button(row6, text = 'Send', height = 2, width = 20, relief = 'raised', cursor = 'hand1', font = ('times', 14, 'bold'))
答案 1 :(得分:0)
有两件事对你不利。首先,当您指定按钮的高度时,如果该按钮具有文本,则height属性指的是文本行。因此,按钮中的高度为20会要求按钮高20行。
其次,容器小部件(通常是Frames,但实际上是任何小部件)的默认行为是“缩小以适应”或“扩展以适应”它包含的所有内容。因此,即使您将帧的高度设置为20像素,它实际上也足以包含其所有子项。这是一件好事,你想要99.9%的时间。你应该避免尝试制作固定大小的窗口,而是让tkinter为你决定合适的尺寸。
这种扩展或收缩的特征称为“几何传播”。当您需要精确控制容器窗口小部件的大小时,可以关闭此行为。本网站上有几个例子说明如何做到这一点。但同样,它很少需要。