我几乎什么都试过了,到处寻找如何在Text()
小部件中动态更改字体。我不想让Text()
小部件中的所有文本只更改字体大小更改后键入的文本,如页面或单词等
这就是我想象中的效果:
#in the __init__ function
sizesList = [8, 10, 12, 13, 14, 16, 18, 22, 26, 32, 40]
var = IntVar()
var.set(13)
self.fontsizeDropDown = OptionMenu(self.toolbarFrame, var, *sizesList, command=self.fontSizeFunc)
self.fontsizeDropDown.grid(row=0, column=1, sticky=N)
def fontSizeFunc(self, var):
theFont = "Arial %d" % var
self.textentry.tag_add('texthere', INSERT, INSERT)
self.textentry.tag_config('texthere', font=theFont)
不过,它所做的只是改变光标后字母的大小,只有在那里有一个字母时,然后任何进一步的输入都会回到原来的字体大小。在
编辑:
想出了另一种方法,我更喜欢,所以把这个放在上面,下面的旧的作为参考。在
新版本:
代码需要跟踪标记索引的开始和结束位置。它还将为每个字体大小提供一个唯一的标记名。我认为一个好的标记名可以与用于标记配置的字体和大小相同。在
当选择一个新的字体大小时,写入的文本将得到一个带有起始和结束索引的标记,并配置了适当的字体大小。然后它将设置新的字体大小,将其设置为文本小部件并更新变量。除非再次更改字体大小,否则不会添加标记。但是由于文本小部件具有当前选择的字体大小,因此它将以正确的大小显示。在
如果要在文本小部件中存储文本,请记住在退出/存储之前通过调用fontSizeFunc()来设置标记。否则最后输入的文本将没有标记。在
旧版本:
如果你想改变的话,我会改变你的想法。每次使用选项菜单更改字体大小时,都会创建一个新标记。在
在下面我的示例代码中,当文本小部件处于焦点时,它检查keyrease。当您键入时,当前标记索引将展开,当您选择新的字体大小时,它将创建一个新的标记。在我能用的地方用你的代码,只是在不上课的情况下调整它。在
^{pr2}$希望你能用这个来建立你自己更好的版本:)
相关问题 更多 >
编程相关推荐