4kpt, проверил 2-й вариант, заметил следующее:
1) Через поле tkinter работает корректно (для получения текста использую entry.get(), потом полученный текст копируется в буфер) (Хотя один раз, кажется, все равно выдал белиберду по непонятной причине)
2) Из текстового файла копирует белиберду (брал разные кодировки - CP1251,UTF-8, но безрезультатно). Декодер показывает, что все равно текст предварительно сконвертирован в CP1252.
Ничего не понимаю.
P.S. Заметил еще большую странность. Кодировка нормально работает после вызова tkinter. Т.е., например,
#!/usr/bin/python3
import win32clipboard
from tkinter import *
default_line_break='\n'
file="orig claims - ru"
with open(file) as f:
text=f.read()
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(text)
win32clipboard.CloseClipboard()
не работает, а
#!/usr/bin/python3
import win32clipboard
from tkinter import *
default_line_break='\n'
def text_field(title):
root, res = Tk(), [None]
# Обратить внимание, что get() работает по-разному для Text и Entry
def callback(): res[0] = entry.get(1.0,END); root.destroy()
root.title(title)
scrollbar = Scrollbar(root,jump=0)
# Маленькое окно: entry=Text(root,width=40,height=15,font="14")
entry=Text(root,font="14",wrap=WORD,yscrollcommand=scrollbar.set)
# Позволяет использовать мышь для управления скроллбаром
scrollbar.config(command=entry.yview)
scrollbar.pack(side=RIGHT,fill=Y)
entry.pack()
# Выход по нажатию Enter
entry.bind('<Return>', lambda e: callback())
# Выход по клику кнопки
ok = Button(root, text='Ввести и выйти',command=callback)
ok.pack()
# Выход по нажатию Enter и Пробел на кнопке (навигация по Shift+Tab)
ok.bind('<Return>', lambda e:callback())
entry.focus_set()
root.mainloop()
if str(res[0])=='None' or str(res[0])==default_line_break:
ErrorMessage(empty_field_error_msg)
sys.exit()
return res[0]
text=text_field('Введите любой текст:')
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(text)
win32clipboard.CloseClipboard()
file="orig claims - ru"
with open(file) as f:
text=f.read()
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(text)
win32clipboard.CloseClipboard()
работает, но почему?