目前,我正在使用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