6

我正在尝试在 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!")

现在,当我单击按钮时,文本确实变大了,但整个小部件会自行调整大小以进行补偿!我认为这是因为小部件的大小是根据“行”和“字符”而不是像素来指定的。如何阻止小部件调整大小?

我尝试不更改小部件的字体,而只是插入带有指定新字体的标签的文本,这是可行的,但问题是当我在插入文本的左侧和右侧手动键入新文本时,这是默认样式,不是我想要的尺寸。

4

1 回答 1

7

我在此页面上找到了我的问题的答案:How to stop Tkinter Text widget resize on font change?

关键是构建一个框架来放置文本小部件,以像素为单位指定框架大小,并调用grid_propagate(False)框架以防止它在文本小部件想要调整大小时调整大小。

于 2012-05-05T17:25:30.073 回答