我正在尝试在Tkinter(用于Python)中创建一个文本小部件,其字体大小可以更改,但是当发生这种情况时,我不希望小部件自行调整大小。窗口小部件中的所有文本都是相同的字体样式。到目前为止我得到了什么:
root = Tk()
t = Toplevel(root)
fnt = tkFont.Font(family="Helvetica",size=36,weight="bold",underline=1)
txt = Text(t, font=fnt, width=20, height=6)
txt.grid(row=0,column=0)
b = Button(t, text="click", command=change)
b.grid(row=1, column=0)
txt.insert(END, "This is text!")
change
定义为:
def change():
txt.delete(1.0, END)
fnt.config(size=100)
txt.insert(END, "This is text!")
现在,当我点击按钮时,文本确实会变大,但整个小部件会自行调整大小以进行补偿!我认为这是因为窗口小部件的大小是用“行”和“字符”来指定的,而不是像素。如何阻止小部件调整大小?
我试过不改变小部件的字体,而只是插入带有指定新字体的标签的文本,这有效,但问题是当我手动在左侧和右侧键入新文本时插入的文本,它是默认样式,而不是我想要的大小。
答案 0 :(得分:6)
我在此页面上找到了我的问题的答案:How to stop Tkinter Text widget resize on font change?
关键是构建一个Frame来放置文本小部件,指定Frame大小(以像素为单位),并在Frame上调用grid_propagate(False)
以防止它在文本小部件想要调整大小时调整大小。 / p>