[Python] шрифты в Tkinter (траблы со шрифтом, юникодом и т.п.)

Модератор: Модераторы разделов

Аватара пользователя
Liksys
Сообщения: 2910

[Python] шрифты в Tkinter

Сообщение Liksys »

Всем здравствуйте.
Возникла такая проблема. Есть графический интерфейс для консольной программы. Написан на Python(Tkinter). Проблема в следующем: некорректно отображаются русскиесимволы в виджетах (см. аттач). Если перед строкой, которая выводится на виджет ставить u, то вообще появляются кракозябры. unicode() тоже не помогает, говорит, что не может сконвертить строку.
Вот тестовая прога:

Код: Выделить всё

#!/usr/bin/python
from Tkinter import *
from ScrolledText import *

tk = Tk()
tk.title("Test")
txt = ScrolledText(tk)
txt.config(background="#FFFFFF")
txt.pack()
txt.insert(END, "Глючный шрифт\nAngliyskiy - normalno :(")
tk.mainloop()

Ругается при запуске так:
sys:1: DeprecationWarning: Non-ASCII character '\xd0' in file ./test.py on line 11, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

Смотрел по ссылке, нашел коммент: # -*- coding: <encoding name> -*-
Поставил # -*- coding: utf-8 -*- - ругаться перестала, но русские символы такие же страшные и остались.
Если ставить считывание с виджета, то ругаетс, даже коммент не помогает:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 16-21: ordinal not in range(128)

Вопрос: как исправить глюки с юникодом и шрифты?
Спасибо сказали:
~S/E/r/G~
Сообщения: 220
ОС: Debian 4.0

Re: [Python] шрифты в Tkinter

Сообщение ~S/E/r/G~ »

попробуй со шрифтами поиграться, хотя под линуксом и в idle такая ерунда с русскими символами=(
debian 4.0: kernel-2.6.18 | Xorg7.2 (fglrx) | Xfce 4.4
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: [Python] шрифты в Tkinter

Сообщение Liksys »

Пробовал, английские символы меняются, русские - такие же и остаются :(
Спасибо сказали:
Аватара пользователя
SatanClaus
Сообщения: 24

Re: [Python] шрифты в Tkinter

Сообщение SatanClaus »


$ cat .Xresources
*font: -*-terminus-*-r-*-*-12-*-*-*-*-*-*-*
*Label*font: -*-terminus-*-r-*-*-12-*-*-*-*-*-*-*
*background: Gray80
*Entry*background: white


Дистр Убунта 6.10

Файл может называться .Xdefaults на федорке
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: [Python] шрифты в Tkinter

Сообщение Liksys »

Таких файлов нет. Я вот думал, может, как то указать проге, какой файл (путь к файлу) со шрифтом использовать? Как это сделать?
Спасибо сказали:
Аватара пользователя
SatanClaus
Сообщения: 24

Re: [Python] шрифты в Tkinter

Сообщение SatanClaus »

Liksys писал(а):
17.12.2006 11:24
Таких файлов нет. Я вот думал, может, как то указать проге, какой файл (путь к файлу) со шрифтом использовать? Как это сделать?


Создать его, потом $ xrdb < .Xdefaults
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: [Python] шрифты в Tkinter

Сообщение Liksys »

Фонты изменились, на русские симвылы эффекта не возымело :huh:
Спасибо сказали:
Аватара пользователя
SatanClaus
Сообщения: 24

Re: [Python] шрифты в Tkinter

Сообщение SatanClaus »

Liksys писал(а):
17.12.2006 11:54
Фонты изменились, на русские симвылы эффекта не возымело :huh:


Нужен шрифт, который будет выглядеть одинаково. Мне подошел терминус.

Что говорит xfontsel?
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: [Python] шрифты в Tkinter

Сообщение Liksys »

А как можно сделать это из самой проги, не трогая оставшиеся иксы? В xterm у меня шрифт нормальный, да и везде он нормальный, тлько вот в питоне... Прога должна будет устанавливаться на неизвестный комп, и если при установке будут меняться дефолтные настройки, пользователь не очень понравится.
Спасибо сказали:
Аватара пользователя
SatanClaus
Сообщения: 24

Re: [Python] шрифты в Tkinter

Сообщение SatanClaus »

Liksys писал(а):
17.12.2006 12:02
А как можно сделать это из самой проги, не трогая оставшиеся иксы? В xterm у меня шрифт нормальный, да и везде он нормальный, тлько вот в питоне... Прога должна будет устанавливаться на неизвестный комп, и если при установке будут меняться дефолтные настройки, пользователь не очень понравится.



import tkFont

заносить через option_add, но это надо мануал читать. Не помню короче.
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: [Python] шрифты в Tkinter

Сообщение Liksys »

Спасибо! Буду пробовать ;)
Спасибо сказали:
Vadimir
Сообщения: 3
ОС: Ubuntu 6.10

Re: [Python] шрифты в Tkinter

Сообщение Vadimir »

Расскажешь о результатах
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: [Python] шрифты в Tkinter

Сообщение Liksys »

Рассказываю. Нормального решения не получилось. Перешел на PyQt.
Спасибо сказали: