我正在tkinter-python中构建一个类似于应用程序的记事本。可以选择更改应用程序文本字段中写入的文本的字体。
我创建了一个Font Chooser弹出屏幕,可以在点击' font'从主窗口调用。 menu,它基本上创建一个FontChooser类对象并传递给主窗口,该窗口设置man窗口中的字体。
在主窗口中设置字体的代码示例是
root = Tix.Tk(className="Notepad")
notepad = ScrolledText(root, width=100, height=100)
def open_font():
font = MyFont.askChooseFont(root)
notepad.tag_add("bt", "sel.first", "sel.last")
notepad.tag_config("bt", font=font.getFontTuple())
现在,当我第一次运行应用程序并选择一部分文本并更改字体时,它可以正常工作。但在那之后,无论我选择和更改字体的文本部分是什么,它都忽略了选择并在整个文本上应用了字体。谁能告诉我这里的问题是什么?
答案 0 :(得分:0)
IDLE使用tag_config语法颜色python代码,它适用于过去15年的所有Python版本和主要操作系统。
要想知道为什么它似乎失败了,你需要找到失败的MCVE。在没有tix和滚动条的情况下启动。 (Tix在3.6中已弃用,并且错误未被修复。)另请注意,您的代码对每个选择使用相同的标记,因此当您更改配置时,它将适用于所有先前的选择。
以下是按预期和预期工作的简化代码。
import tkinter as tk
import time
root = tk.Tk()
text = tk.Text(root)
text.pack()
text.insert('1.0', "line 1\nline 2\nline 3\n")
text.tag_add('bg', '1.0', '1.4')
text.tag_config('bg', background='red')
root.update()
time.sleep(1)
text.tag_add('bg', '2.0', '2.4')
text.tag_config('bg', background='blue')
root.update()
您可以尝试逐步修改它,直到它重现您的问题或做您想要的。
使用示例修改进行编辑:使用' sel.first'和' sel.last'而不是硬编码索引。
import tkinter as tk
import time
root = tk.Tk()
text = tk.Text(root)
text.pack()
text.insert('1.0', "line 1\nline 2\nline 3\n")
root.update() # make text visible for selection
input('select some text')
text.tag_add('bg', 'sel.first', 'sel.last')
text.tag_config('bg', background='red')
root.update() # make change visible
input('select some text')
text.tag_add('bg', 'sel.first', 'sel.last')
text.tag_config('bg', background='blue')
root.update() # make 2nd change visible
input('look at result')
在控制台中运行。移动tk窗口,以便控制台和GUI都可见。根据提示进行选择。单击console *并单击return以允许输入语句返回。重复。对我来说,结果是两个选择,但不是一切,变成蓝色。我建议在下一个实验中更改字体而不是bg颜色。