2015-02-06 2 views
1

В настоящее время я работаю над текстовым редактором графического интерфейса с помощью 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 можно будет также полезно (в настоящее время, я вижу, теги и не конец формата) ,

ответ

1

В tkinter нет поддержки. Вам нужно будет выбрать файл fomat, который поддерживает шрифты (rtf, .docx, .html и т. Д.), Преобразует данные в виджет в этот формат и затем записывает их в файл.

+0

Благодарим вас за разъяснение. Тем не менее, я попытался использовать формат rtf, и все теги отображаются. Как я могу отобразить его в tkinter с фактическим форматированием? Кроме того, формат по-прежнему не сохраняется, когда я пытаюсь сохранить RTF-файл из редактора. –

+1

@PseudonymEnigma: к сожалению, вам придется анализировать данные rtf и переформатировать его для текстового виджета. Текстовый виджет не может отображать текстовые форматы из коробки. –

+0

Спасибо. Я очень новичок в Tkinter. Не могли бы вы показать мне, как я это сделаю. –

1

Блокнот может иметь только собственный шрифт и размер для каждого открываемого файла, он не сохраняет его в файле, он просто запоминает пользовательские настройки пользователя и применяет их к своему окну при его использовании. Текстовый виджет tkinter может быть ужасным, чтобы сохранить форматирование в другом формате, я попытался преобразовать его в XML для сохранения в .docx, но я не был успешным. Я использовал свой собственный формат, который представляет собой текстовый файл с индексом тегов текстового виджета tkinter в начале и их строки & индексов столбцов, а затем маркер для начала документа, а затем документ. Однако это не может содержать изображения, и он открывается всем индексом форматирования, когда вы открываете его в другом текстовом процессоре.

Смежные вопросы