如果文本更改了小部件的大小,则更改大小

时间:2018-06-07 16:08:15

标签: python python-3.x tkinter

First attempt。  在这里,您可以看到字体如何更改大小和文本小部件更改大小。我需要文本小部件来保持其大小。我尝试在框架中创建文本小部件并生成frm.grid_propagate (False)。您在second attempt中看到的结果。 在第二次尝试中,窗口小部件现在只能减少,它无法增加。但是当字体大小很大时,文本将打印在文本小部件边框之外,并且不可见

from tkinter import*
import tkinter as tk
def fontUp():
    global count
    if text.tag_ranges('sel'):
        text.tag_add('colortag_' + str(count), SEL_FIRST,SEL_LAST)
        text.tag_configure('colortag_' + str(count),font='Area 35')
        count+=1
    else:    
        text.configure(font='Area 30')

count=0    
root = tk.Tk()
root.geometry("800x800")

frm = tk.Frame(root, height = 300, width = 500)
frm.grid(row = 0, column = 0)
frm.grid_propagate(False)

text = tk.Text(frm, height = 20, width = 50)
text.grid(row = 0, column = 0)

btn = tk.Button(root, text="Font bigger", command = fontUp)
btn.grid(row = 2, column = 0)

此代码与我的second attempt具有相同的错误。

当我们点击按钮大小文字增加时,小部件也会增加。但我有一个' fontUp'只增加所选文本的功能。该功能的工作方式如下:首先选择文本,然后单击按钮,文本增加,但小部件不增加是我需要的。如何使文本更改其大小,并且窗口小部件不会更改其大小

1 个答案:

答案 0 :(得分:1)

对我来说,最好的解决方案是将窗口小部件大小设置为0或1,然后让几何管理使窗口增大或缩小以适合包含框架。这是因为字体更改仅影响窗口的所需大小而不是实际大小,并且所需大小基于宽度和高度。实际尺寸由包含框架控制。

在以下示例中,我使用pack作为文本小部件。它也适用于grid,但需要额外的几行代码来给出行和列权重。由于文本小部件是包含框架中唯一的小部件,因此pack更易于使用。

frm = tk.Frame(root, height = 300, width = 500)
frm.grid(row = 0, column = 0)
frm.pack_propagate(False)

text = tk.Text(frm, height = 0, width = 0)
text.pack(fill="both", expand=True)