В настоящее время я работаю над текстовым редактором графического интерфейса с помощью python и tkinter. Благодаря великим людям в SO (спасибо Ринцлер), мне удалось изменить шрифт текста. Тем не менее, я не могу сохранить шрифт и размер шрифта в файле txt
. Я знаю, что это должно быть возможно, так как Notepad может изменять и сохранять файл 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
Это код (любезность Rinzler), чтобы изменить шрифт:
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-файл из редактора. –
@PseudonymEnigma: к сожалению, вам придется анализировать данные rtf и переформатировать его для текстового виджета. Текстовый виджет не может отображать текстовые форматы из коробки. –
Спасибо. Я очень новичок в Tkinter. Не могли бы вы показать мне, как я это сделаю. –