目前,我正在使用python和tkinter编写GUI文本编辑器。感谢SO的伟大人士(谢谢Rinzler),我设法修改了文本的字体。但是,我无法将字体和字体大小保存到txt
文件。 我知道这应该是可能的,因为记事本可以用指定的字体修改和保存txt
文件。Python Tkinter文本编辑器不会将字体保存到文本文件
这是代码保存到一个文件:
def file_saveas():
filename = tkFileDialog.asksaveasfile(mode='w', defaultextension=".txt")
if filename is None: # asksaveasfile return `None` if dialog closed with "cancel".
return
text2save = str(textPad.get(1.0, END)) # starts from `1.0`, not `0.0`
filename.write(text2save)
filename.close()
print filename
这是代码(林兹勒提供)更改字体:
def choose_font():
global root, textPad # I hate to use global, but for simplicity
t = Tkinter.Toplevel()
font_name = Tkinter.Label(t, text='Font Name: ')
font_name.grid(row=0, column=0, sticky='nsew')
enter_font = Tkinter.Entry(t)
enter_font.grid(row=0, column=1, sticky='nsew')
font_size = Tkinter.Label(t, text='Font Size: ')
font_size.grid(row=1, column=0, sticky='nsew')
enter_size = Tkinter.Entry(t)
enter_size.grid(row=1, column=1, sticky='nsew')
# associating a lambda with the call to text.config()
# to change the font of text (a Text widget reference)
ok_btn = Tkinter.Button(t, text='Apply Changes',
command=lambda: textPad.config(font=(enter_font.get(),
enter_size.get())))
print font
ok_btn.grid(row=2, column=1, sticky='nsew')
done = Tkinter.Button(t, text='Get rid of Pushy!', command=t.destroy)
done.grid(row=4, column=1, sticky='nsew')
# just to make strechable widgets
# you don't strictly need this
for i in range(2):
t.grid_rowconfigure(i, weight=1)
t.grid_columnconfigure(i, weight=1)
t.grid_rowconfigure(2, weight=1)
最后,这是一个读码字体和其他配置信息:
font = (fontname, size)
textPad.config(
borderwidth=0,
font=font ,
foreground="green",
background="black",
insertbackground="white", # cursor
selectforeground="blue", # selection
selectbackground="#008000",
wrap="word",
width=64,
undo=True, # Tk 8.4
)
我已经搜索了互联网,没有拿出任何一个关于为什么不保存字体和文本大小的问题。任何帮助将不胜感激。
我使用python 2.7.7,Tkinter的,而这正在对Windows 7的
运行任何帮助操作的RTF文件也将是有益的(目前,我看到了标签,而不是结束格式) 。
谢谢你的解释。但是,我尝试使用rtf格式并显示所有标签。我将如何在tkinter中以实际的格式显示它?另外,当我尝试从编辑器保存RTF文件时,格式仍然未保存。 – 2015-02-07 00:00:02
@PenonymEnigma:不幸的是,你将不得不分析rtf数据并重新格式化文本部件。文本小部件无法显示任何富文本格式。 – 2015-02-07 00:51:44
谢谢。我对Tkinter很新。你能告诉我我该怎么做。 – 2015-02-07 00:54:09