2012-05-05 33 views
3

我正在嘗試在Tkinter(對於Python)中創建一個字體大小可以更改的文本小部件,但是當發生這種情況時,我不希望小部件自行調整大小。小部件中的所有文本都是相同的字體樣式。我已經走到這一步:以像素爲單位指定Tkinter文本小部件的尺寸?

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

我找到了答案,我的這個網頁上的問題:How to stop Tkinter Text widget resize on font change?

的關鍵是要建立一個框,使文本組件中,指定以像素爲單位的幀大小,並呼籲grid_propagate(False)的框架,以防止文本小部件調整大小時調整大小。

相關問題